如何通过与单个 int 变量进行比较来过滤列表 <int>?
How to filter a list<int> by comparing against a single int variable?
我有一个 list<int>
,其值如 10
、20
、30
、56
。我还有一个局部变量 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));
我有一个 list<int>
,其值如 10
、20
、30
、56
。我还有一个局部变量 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));