如何通过与单个 int 变量进行比较来过滤列表 <int>?

How to filter a list<int> by comparing against a single int variable?

我有一个 list<int>,其值如 10203056。我还有一个局部变量 int _marks = 30.

如何打印列表中小于_marks的值?

您可以使用 System.Linq 命名空间中的 Where() 来过滤数组。它 returns IEnumerable<int> 对象。为了打印这个集合中的元素,我们可以使用 List<T>.ForEach 方法。它对 List<T> 的每个元素执行指定的操作。如果是单个参数,您可以单独传递函数:

marks.Where(x => x < _marks).ToList().Foreach(Console.WriteLine);

顺便说一句,如果您是新手,您也可以使用非 LINQ 解决方案:

foreach(int item in marks)
{
    if(item < _marks)
        Console.WriteLine(item);
}

此外,正如@Kjartan 所说,如果列表是有序的,那么使用 TakeWhile()SkipWhile() 函数来获取所需元素可能是一个不错的选择:

// If the list is ordered in ascending order
marks.TakeWhile(x => x < _marks).ToList().Foreach(Console.WriteLine);

// If the list is ordered in descending order
marks.SkipWhile(x => x >= _marks).ToList().Foreach(Console.WriteLine);

这里有几个选项。几个例子:

var yourList = new List<int>{10, 20, 30, 40, 50, 56, 60, 70};
var _marks = 55;

// Get a IEnumerable containing values matching your condition ( ie. < _marks):
var selected = yourList.Where(i => i < _marks);

如果您知道值是按递增值排序的替代方案(这将避免不必要地遍历整个列表):

var selected = yourList.TakeWhile(i => i < _marks);

要打印,请执行例如:

selected.ToList().ForEach(i => Console.WriteLine(i));