3 回答
TA贡献1155条经验 获得超0个赞
只是为了好玩,这里是一个yield版本和IEnumerable扩展方法
public static class StupidExtensions
{
public static IEnumerable<int> Digits(int input)
{
do yield return input % 10; while ((input /= 10) > 0);
}
public static IEnumerable<int> WhereDigit(this IEnumerable<int> source, int digit)
=> source.Where(x => Digits(x).Contains(digit));
}
用法
var result = Allnumber.WhereDigit(3);
这里还有2个
protected override IEnumerable<int> InternalRun(IEnumerable<int> values, int digit)
{
var ary = values.ToArray();
var result = new List<int>();
fixed (int* pAry = ary)
{
for (var p = pAry; p < pAry + ary.Length; p++)
for (var d = *p; d > 0; d /= 10)
if (d % 10 == digit){ result.Add(*p); break;}
}
}
protected override IEnumerable<int> InternalRun(IEnumerable<int> values, int digit)
{
foreach (var val in values)
for (var d = val; d > 0; d /= 10)
if (d % 10 == digit)
yield return val;
}
TA贡献1799条经验 获得超9个赞
首先将Where
子句中的所有数字转换为ToString
,然后使用Contains
来获取包含数字3的所有数字的列表:
var result = Allnumber.Where(x => x.ToString().Contains("3")).ToList();
- 3 回答
- 0 关注
- 117 浏览
添加回答
举报