Ответ 1
list
никогда не будет null
с LINQ; он будет просто представлять "пустую коллекцию", если это необходимо. Способ тестирования заключается в методе расширения Any
:
if (list.Any()) {
// list has at least one item
}
Я просто хочу знать, что лучший способ проверить, нет ли результата 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`
}
Любой возможный способ проверить набор результатов имеет контент или нет.
Спасибо
list
никогда не будет null
с LINQ; он будет просто представлять "пустую коллекцию", если это необходимо. Способ тестирования заключается в методе расширения Any
:
if (list.Any()) {
// list has at least one item
}
Исключение будет выбрано, если 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>(); }
Вот что работает для меня:
public IQueryable SomeFunc()
{
IQueryable result = Repo.SomeLinqQuery();
if (result.GetEnumerator().MoveNext() == false)
{
throw new Exception("Results empty");
}
return result;
}