Linq跳过,拿走

时间:2012-02-01 23:26:16

标签: linq

我有一个包含4行的列表。 我需要获得第3行的值。

    var result = (from rs in list
                  select rs).Skip(2).First();

我有没有理由想在这个场景中使用Take(1),因为我已经看过了。

     var result = (from rs in list
                  select rs).Skip(2).Take(1);

3 个答案:

答案 0 :(得分:18)

Take(1)会返回包含一个对象的IEnumerable<T> First()直接返回对象。

答案 1 :(得分:5)

在问题的上下文中Take(1)返回的IEnumerable<T> 将包含零个或一个元素 - 因此它类似于FirstOrDefault()(除了返回一个枚举)。

所以回答你的问题:不。在这种情况下,请使用First()FirstOrDefault(),具体取决于您对结果集中的内容的期望。

答案 2 :(得分:0)

除非您想要跳过前两项

的多个项目
//Example:
 var result = (from rs in list
                      select rs).Skip(2).Take(5); //Returns 5 items