如何找到第一个特定项目然后采取3以下?

时间:2015-10-15 09:44:27

标签: c# asp.net linq

我正在尝试根据LINQ语句在哪里找到位置,并获取该项目和下一个(x)金额。示例代码:

List<int> numbers = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
numbers = numbers.Where(elt => elt == 6).Take(3).ToList();

我试图找回6,7,8的过滤列表。但这不起作用。我接近这个错误吗?

提前致谢!

3 个答案:

答案 0 :(得分:6)

你几乎得到了它。您只需将Where更改为SkipWhile

即可
numbers = numbers.SkipWhile(elt => elt != 6).Take(3).ToList();

答案 1 :(得分:1)

您必须使用Where()重载来获取项目索引,然后使用indexOf()

 List<int> numbers = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });

 var result = numbers.Where((x, i) => i >= numbers.IndexOf(6)).Take(3);

答案 2 :(得分:0)

这是另一种方法,当这个数字不是唯一的并且你想要包括下两个粉丝在内的所有事件时,它会发挥作用:

List<int> numbers = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 6 });
numbers = Enumerable.Range(0, numbers.Count)
    .Where(index => numbers[index] == 6)
    .SelectMany(index => numbers.Skip(index).Take(3))
    .ToList();  // 6,7,8,6,7,8,6