Подтвердить что ты не робот

Каков наилучший способ проверки набора результатов IQueryable?

Я просто хочу знать, что лучший способ проверить, нет ли результата IQueryable.

например. если у нас есть такой метод, как

public static IQueryable<Table> DisplayAll()
{
    var db = new DataContext();
    var list= from data in db.Table select data;
    return list;
}

а затем мы делаем что-то вроде этого

var list = DisplayAll();
if(list != null)
{
     //do something --- in here even if the result set has no values it will
     // go to this line. It just say `enumeration yielded no results`
}

Любой возможный способ проверить набор результатов имеет контент или нет.

Спасибо

4b9b3361

Ответ 1

list никогда не будет null с LINQ; он будет просто представлять "пустую коллекцию", если это необходимо. Способ тестирования заключается в методе расширения Any:

if (list.Any()) {
    // list has at least one item
}

Ответ 2

Исключение будет выбрано, если IQueryable yeilds не приведет к результату. Я использую:

using System.Data.Entity; //for Async support in EF
var tQ = await _tableRepository.DisplayAll();
try { return await tQ.ToListAsync(); }
catch { return null; }

чтобы уловить исключение и вернуть null; или пустой список, если вы предпочитаете,

catch { return new List<Table>(); }

Ответ 3

Вот что работает для меня:

    public IQueryable SomeFunc()
    {
        IQueryable result = Repo.SomeLinqQuery();
        if (result.GetEnumerator().MoveNext() == false)
        {
            throw new Exception("Results empty");
        }
        return result;
    }