猿问

C#如何从列表中选取包含x号的数字?

   static void Main(string[] args)

    {

        List<int> Allnumber = new List<int>();

        Random rnd = new Random();

        while (true)

        {

            int dice = rnd.Next(1, 100);

            Console.WriteLine("Random number between 1 and 100 : {0}", dice);

            Allnumber.Add(dice);

            if (dice == 1)

                break;

        }


        Console.WriteLine();

        Console.WriteLine("Allnumber : " + string.Join(" ", Allnumber));

        List<int> Odd = (from number in Allnumber where number % 2 != 0 select number).ToList();

        List<int> Even = new List<int>(from number in Allnumber where number % 2 == 0 select number);

        Console.WriteLine("Odd : " + string.Join(" ", Odd));

        Console.WriteLine("Even : " + string.Join(" ", Even));

我要创建一个新列表,其中包括Allnumber列表中的3。它应包含所有具有3(3、13、23、33、34、36、39、43、53 ...)的数字。反正只能拿起3秒?我发现那里有Findall,Contain方法,但不能将它用于int类型列表。谢谢每个人都不能相信有很多方法可以做到这一点:D


至尊宝的传说
浏览 118回答 3
3回答

白衣非少年

只是为了好玩,这里是一个yield版本和IEnumerable扩展方法public static class StupidExtensions{&nbsp; &nbsp; public static IEnumerable<int> Digits(int input)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; do yield return input % 10; while ((input /= 10) > 0);&nbsp; &nbsp; }&nbsp; &nbsp; public static IEnumerable<int> WhereDigit(this IEnumerable<int> source, int digit)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; => source.Where(x => Digits(x).Contains(digit));}用法var result = Allnumber.WhereDigit(3);这里还有2个protected override IEnumerable<int> InternalRun(IEnumerable<int> values, int digit){&nbsp; &nbsp;var ary = values.ToArray();&nbsp; &nbsp;var result = new List<int>();&nbsp; &nbsp;fixed (int* pAry = ary)&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; for (var p = pAry; p < pAry + ary.Length; p++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (var d = *p; d > 0; d /= 10)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (d % 10 == digit){ result.Add(*p); break;}&nbsp; &nbsp;}&nbsp;&nbsp;}protected override IEnumerable<int> InternalRun(IEnumerable<int> values, int digit){&nbsp; &nbsp;foreach (var val in values)&nbsp; &nbsp; &nbsp; for (var d = val; d > 0; d /= 10)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (d % 10 == digit)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; yield return val;}

扬帆大鱼

首先将Where子句中的所有数字转换为ToString,然后使用Contains来获取包含数字3的所有数字的列表:var&nbsp;result&nbsp;=&nbsp;Allnumber.Where(x&nbsp;=>&nbsp;x.ToString().Contains("3")).ToList();
随时随地看视频慕课网APP
我要回答