寻找LINQ语法,该语法获取列表中以特定

时间:2017-08-08 17:43:41

标签: c# list linq

使用下面的代码,我可以获得以" 5VOH"开头的列表中的第一项。

list.FirstOrDefault(s => s.StartsWith("5VOH"));

我如何获得第二或第三?我尝试过使用......

list.Skip(1).FirstOrDefault(s => s.StartsWith("5VOH"));

但那不起作用。它仍然抓住了第一个。

感谢。

3 个答案:

答案 0 :(得分:8)

您正在做的是跳过第一项,无论它是否与您的过滤器匹配。相反,你想要过滤然后跳过1然后在第一个之后取第一个或默认如果没有第二个匹配。

var results = list.Where(s => s.StartsWith("5VOH")).Skip(1).FirstOrDefault();

答案 1 :(得分:2)

使用Skip(1)跳过1st。

list.Where(s => s.StartsWith("5VOH")).Skip(1).FirstOrDefaoult();

答案 2 :(得分:-1)

您可以编写一个函数来获取任何第N个元素。

这里N基于0,但你可以随心所欲地制作它。

    public static string FindNthItem(List<string> list, string search, int n)
    {
        var results = list.Where(x => x.StartsWith(search)).ToList();
        if (n > results.Count || n < 0)
            return null;
        else
            return results[n];
    }