检查IQueryable结果集的最佳方法是null

时间:2011-10-19 13:30:20

标签: c# asp.net linq

我只想知道检查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`
}

检查结果集的任何可能方法都有内容吗?

由于

3 个答案:

答案 0 :(得分:78)

对于LINQ,

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;
    }