检查IQueryable结果集是否为空的最好方法是什么?

本文关键字:方法 是什么 结果 IQueryable 是否 检查 | 更新日期: 2023-09-27 18:11:36

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

是否有可能检查结果集是否有内容??

谢谢

检查IQueryable结果集是否为空的最好方法是什么?

list将永远不会是null与LINQ;如果需要,它将简单地表示一个"空集合"。测试的方法是使用Any扩展方法:

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

如果IQueryable没有产生结果,将抛出异常。我使用:

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

捕获异常并返回null;或者一个空的List

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

我是这么做的:

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