使用索引器迭代Linq结果集

时间:2009-10-12 13:19:28

标签: linq indexer

我们有这个问题:

var results = from row in db.Table select row;

我如何访问:

string name = results[0]["columnName"];

4 个答案:

答案 0 :(得分:2)

如果您只是想要第0个元素,则可以使用results.First()

答案 1 :(得分:2)

如果你真的想要一个特定的索引,你可以使用 Skip()方法和 First()

var rowOffset = 0;
var results = (from row in db.Table 
               select row).Skip(rowOffset).First()["columnName"];

但除非您使用 Where 子句,否则我建议您使用索引器。索引器几乎是一个直接引用,而LINQ语句将使用对象迭代器。

另外不要忘记你可以用LINQ做更高级的东西。

var rowOffset = 0;
var pageLength = 10;
var results = (from row in db.Table 
               let colValue = row["columnname"]
               where colValue != null
               select colValue.ToString()
               ).Skip(rowOffset)
               .Take(pageLength)
               .ToArray();
var commaString = string.Join(", ", results);

答案 2 :(得分:1)

resultsIEnumerable行列表。所以你可以用一个简单的foreach来获得它。

foreach(var row in results)
{
   string name = row["columnName"];
}

答案 3 :(得分:1)

(来自db.Table选择行中的行).First()。columnName