我只想知道检查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`
}
检查结果集的任何可能方法都有内容吗?
由于
答案 0 :(得分:78)
list
永远不会是null
;如果需要,它将简单地代表一个“空集合”。测试方法是使用Any
扩展方法:
if (list.Any()) {
// list has at least one item
}
答案 1 :(得分:1)
如果IQueryable没有结果,将抛出异常。我用:
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>(); }
答案 2 :(得分:-1)
这对我有用:
public IQueryable SomeFunc()
{
IQueryable result = Repo.SomeLinqQuery();
if (result.GetEnumerator().MoveNext() == false)
{
throw new Exception("Results empty");
}
return result;
}