2012-02-01 74 views
9

我有一个有4行的列表。 我需要得到第三行的值。Linq跳过,取

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

是否有一个原因,我想在此之情况使用采取(1)我见过使用。

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

从'y选择x'中写入'从来没有任何意义。 – SLaks 2012-02-01 23:30:02

+2

直接使用list.Skip(2).Take(1) – 2012-09-18 14:41:00

+4

'list.ElementAt(2)'是你所需要的,如果你知道你正在寻找的物品的索引。 – Naikrovek 2013-04-05 13:36:30

回答

18

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

+12

这实际上是错误的 - 如果源枚举为空,'Take(1)'可能会返回包含零对象的枚举。 – BrokenGlass 2012-02-03 18:17:16

0

除非你想获得多个项目跳过前两个项目

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

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

所以回答你的问题:不。在这种情况下,根据您对结果集内容的期望,使用First()FirstOrDefault()