Лучший способ проверить набор результатов из проекции LINQ, чем List.Count? - PullRequest
0 голосов
/ 25 октября 2011

Есть ли лучший способ проверить, возвращает ли запрос проекции LINQ результаты:

IList<T> TList = db.Ts.Where(x => x.TId == 1).ToList();  // More canonical way for this?
if (TitleList.Count > 0)
{
   // Result returned non-zero list!
   string s = TList.Name;
}

1 Ответ

2 голосов
/ 25 октября 2011

Вы можете использовать Any() или, возможно, более подходящий для вашего примера SingleOrDefault(). Обратите внимание, что если вы ожидаете более одного результата и планируете использовать все из них, то на самом деле ничего не сохраняется для использования Any() вместо преобразования в список и проверки длины. Если вы не планируете использовать все результаты или создаете запрос большего размера, который может изменить его выполнение, то это может быть разумной альтернативой.

var item = db.Ts.SingleOrDefault( x => x.TId == 1 );
if (item != null)
{
    string s = item.Name;
    ...
}

или

var query = db.Ts.Where( x => x.Prop == "foo" );
if (query.Any())
{
    var moreComplexQuery = query.Join( db.Xs, t => t.TId, x => x.TId );
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...