C# Lambda表达式,用于选择索引>;x
我有一个列表,其中包含C# Lambda表达式,用于选择索引>;x,c#,.net-4.0,lambda,C#,.net 4.0,Lambda,我有一个列表,其中包含int类型的数组。使用lambda表达式如何选择索引大于2的所有项的列表 例如,下面的列表应返回8和9: var items = new List<object>() { new int[3] { 1, 2, 3 }, new int[1] { 4 }, new int[5] { 5, 6, 7, 8, 9 } }; //var overTwoIndexItems = ? var items=新
int
类型的数组。使用lambda表达式如何选择索引大于2的所有项的列表
例如,下面的列表应返回8和9:
var items = new List<object>()
{
new int[3] { 1, 2, 3 },
new int[1] { 4 },
new int[5] { 5, 6, 7, 8, 9 }
};
//var overTwoIndexItems = ?
var items=新列表()
{
新int[3]{1,2,3},
新int[1]{4},
新int[5]{5,6,7,8,9}
};
//var overTwoIndexItems=?
您可以使用Skip
跳过每个数组中的前三项(即索引为0、1和2的项)。您可以使用SelectMany
展平结果:
var overTwoIndexItems = items.SelectMany(a => ((int[])a).Skip(3));
或更安全的版本(当您将非整数数组的内容添加到对象列表时,将处理这种情况):
顺便问一下:为什么要使用对象列表
?看起来像是ArrayList
。泛型的要点是强类型参数。使用列表
。然后查询将如下所示:
items.SelectMany(a => a.Skip(3))
@Sergey有正确的方法,但鉴于它是一个
IList
,您需要先将其强制转换
var result = items.Select (x => (int[])x).SelectMany (x => x.Skip(3));
//result = new int[]{ 8, 9 };
items.SelectMany(a => a.Skip(3))
var result = items.Select (x => (int[])x).SelectMany (x => x.Skip(3));
//result = new int[]{ 8, 9 };