Linq跳过,拿走

Nat*_*Pet 9 linq

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

    var result = (from rs in list
                  select rs).Skip(2).First();
Run Code Online (Sandbox Code Playgroud)

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

     var result = (from rs in list
                  select rs).Skip(2).Take(1);
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 18

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

  • 这实际上是错误的 - 如果源枚举为空,则Take(1)`可能返回包含零对象的可枚举. (12认同)

Bro*_*ass 5

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

那么回答你的问题:不.使用First()或者FirstOrDefault()在这种情况下,取决于您对结果集中的内容的期望.