You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#技术问询:如何从List<int>中筛选包含指定数字的元素?

嘿,我来帮你搞定这个筛选包含指定数字x的元素的需求!先给你梳理两种常见的实现方式,还有个小细节要提醒你哦~

实现筛选包含指定数字x的元素

首先要明确:我们要筛选的是数字的某一位包含x的元素(比如x=5时,5、15、50、55这些都符合条件)。下面给你两种实现思路,按需选择。

小细节修正:原代码的随机数范围

先提个小问题:原代码里的rnd.Next(1, 100)其实生成的是1到99的整数(因为Next方法的上限是排他的),如果要覆盖1到100的所有数,得改成rnd.Next(1, 101)哦!


方法一:用LINQ+字符串判断(简洁直观)

这种方式把数字转成字符串,直接检查是否包含x的字符串形式,代码写起来非常简洁,适合日常场景:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        List<int> Allnumber = new List<int>();
        Random rnd = new Random();
        
        // 生成1-100的随机数,直到出现1为止
        while (true)
        {
            int dice = rnd.Next(1, 101); // 修正范围:包含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 = Allnumber.Where(n => n % 2 != 0).ToList();
        List<int> Even = Allnumber.Where(n => n % 2 == 0).ToList();

        Console.WriteLine("\nOdd numbers: " + string.Join(" ", Odd));
        Console.WriteLine("Even numbers: " + string.Join(" ", Even));

        // 新增:筛选包含指定数字x的元素
        int x = 5; // 这里可以替换成你需要的数字,或者让用户输入
        List<int> numbersWithX = Allnumber.Where(n => n.ToString().Contains(x.ToString())).ToList();

        Console.WriteLine($"\nNumbers containing {x}: " + string.Join(" ", numbersWithX));
    }
}

方法二:用数值运算判断(无字符串转换,性能更优)

如果处理大量数据,不想用字符串转换的话,可以通过取余和除法逐位检查数字,写个辅助方法就行:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        List<int> Allnumber = new List<int>();
        Random rnd = new Random();
        
        while (true)
        {
            int dice = rnd.Next(1, 101);
            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 = Allnumber.Where(n => n % 2 != 0).ToList();
        List<int> Even = Allnumber.Where(n => n % 2 == 0).ToList();

        Console.WriteLine("\nOdd numbers: " + string.Join(" ", Odd));
        Console.WriteLine("Even numbers: " + string.Join(" ", Even));

        // 新增:筛选包含指定数字x的元素
        int x = 5;
        List<int> numbersWithX = Allnumber.Where(n => ContainsDigit(n, x)).ToList();

        Console.WriteLine($"\nNumbers containing {x}: " + string.Join(" ", numbersWithX));
    }

    // 辅助方法:判断数字是否包含指定位
    static bool ContainsDigit(int number, int digit)
    {
        // 特殊处理digit为0的情况(比如数字10包含0)
        if (digit == 0)
        {
            if (number == 0) return true;
            while (number > 0)
            {
                if (number % 10 == 0) return true;
                number /= 10;
            }
            return false;
        }

        // 处理digit非0的情况
        while (number > 0)
        {
            if (number % 10 == digit) return true;
            number /= 10;
        }
        return false;
    }
}

扩展:让用户输入指定数字x

如果想让程序更灵活,可以让用户自己输入要筛选的数字:

// 替换掉原有的x赋值部分
Console.Write("\n请输入要筛选的单个数字(0-9):");
if (int.TryParse(Console.ReadLine(), out int x) && x >= 0 && x <= 9)
{
    List<int> numbersWithX = Allnumber.Where(n => ContainsDigit(n, x)).ToList();
    Console.WriteLine($"包含数字{x}的元素:" + string.Join(" ", numbersWithX));
}
else
{
    Console.WriteLine("请输入有效的0-9之间的数字哦!");
}

这样用户就能按需筛选任意单个数字啦~

内容的提问来源于stack exchange,提问作者Jungmin Koo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:29:16