我的list<int>
值为10
,20
,30
,56
。我还有一个局部变量int _marks = 30
。
如何打印列表中小于_marks
值的值?
答案 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));