gpt4 book ai didi

c# - LINQ IQueryable 检查是否为空而不枚举

转载 作者:行者123 更新时间:2023-11-30 22:12:43 26 4
gpt4 key购买 nike

这听起来像是一个荒谬的问题,但我在任何地方都找不到直接的答案。

我有一个返回 IQueryable<MyObject> 的函数来自 LINQ-to-SQL 查询的对象。我知道 IQueryable 对象使用惰性求值,所以我不想使用 .Count 来枚举它在返回对象之前。但是,我想在将它传回给调用者之前检查它是否不是“null”或空的。原因是,如果查询没有返回结果,则意味着调用者传递了一个无效参数,因此我想抛出一个异常。

本题:LINQ results when there are no matches?似乎没有为我的这个问题提供直接的答案。

我的问题是:有没有办法在不枚举 IQueryable 对象的情况下检查它是否为空?会检查 default(IQueryable<T>)成功了吗?

最佳答案

Is there a way to check if an IQueryable object is empty without enumerating it?

不,那是不可能的。

确定查询是否至少有一个结果的唯一方法是实际执行查询。您不需要迭代整个结果集,但您需要尝试获取第一项,这意味着将查询发送到数据库,让它执行并发送响应。

如果您确实必须这样做,那么您最好将整个结果集拉入内存,比如一个列表,进行检查,然后返回一个 IEnumerable 而不是一个可查询

那个,或者干脆不做检查。

关于c# - LINQ IQueryable 检查是否为空而不枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com