Итерация набора результатов Linq с использованием индексаторов - PullRequest
0 голосов
/ 12 октября 2009

Давайте, у меня есть этот запрос:

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

Как я могу получить доступ к этому:

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

Ответы [ 4 ]

2 голосов
/ 12 октября 2009

Если вы действительно хотите определенный индекс, вы можете использовать метод Skip () с First () .

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

Но если вы не используете предложение Где , я бы действительно рекомендовал использовать индексатор. Индексатор в значительной степени является прямой ссылкой, тогда как оператор 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 голосов
/ 12 октября 2009

Если вам просто нужен нулевой элемент, вы можете использовать results.First ()

1 голос
/ 12 октября 2009

(из строки в db.Table выберите строку) .irst (). ColumnName

1 голос
/ 12 октября 2009

results - это список IEnumerable строк. Так что вы можете получить его с помощью простого foreach.

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