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

时间:2015-03-23 06:24:43

标签: c# list console

我的list<int>值为10203056。我还有一个局部变量int _marks = 30

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

2 个答案:

答案 0 :(得分:4)

您可以使用Where()命名空间中的System.Linq来过滤数组。它返回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);

答案 1 :(得分:2)

你有几种选择。几个例子:

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));