使用下面的代码,我可以获得以" 5VOH"开头的列表中的第一项。
list.FirstOrDefault(s => s.StartsWith("5VOH"));
我如何获得第二或第三?我尝试过使用......
list.Skip(1).FirstOrDefault(s => s.StartsWith("5VOH"));
但那不起作用。它仍然抓住了第一个。
感谢。
答案 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];
}