我有一个有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);
我有一个有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);
Take(1)
返回一个包含一个对象的IEnumerable<T>
。
First()
直接返回对象。
这实际上是错误的 - 如果源枚举为空,'Take(1)'可能会返回包含零对象的枚举。 – BrokenGlass 2012-02-03 18:17:16
除非你想获得多个项目跳过前两个项目
//Example:
var result = (from rs in list
select rs).Skip(2).Take(5); //Returns 5 items
在问题Take(1)
的上下文中返回一个IEnumerable<T>
其中将包含零个或一个元件 - 因此它类似于FirstOrDefault()
(除了返回一个枚举)。
所以回答你的问题:不。在这种情况下,根据您对结果集内容的期望,使用First()
或FirstOrDefault()
。
从'y选择x'中写入'从来没有任何意义。 – SLaks 2012-02-01 23:30:02
直接使用list.Skip(2).Take(1) – 2012-09-18 14:41:00
'list.ElementAt(2)'是你所需要的,如果你知道你正在寻找的物品的索引。 – Naikrovek 2013-04-05 13:36:30