gpt4 book ai didi

c# - 如何检查空的 IEnumerable 集合?

转载 作者:行者123 更新时间:2023-11-30 15:06:40 34 4
gpt4 key购买 nike

根据同一问题给出的答案:How to check IEnumerable<DataRow> returns null or has any row?以及我发现的大多数谷歌搜索结果,您应该使用 .Any() 来验证该集合是否至少包含一项。

但是,在以下代码中,.Any() 抛出“对象引用未设置到对象的实例”异常。有人可以指出我做错了什么吗?

DataSet navData = GetNavigationData();
bool linkFound = false;

if(!CommonLibrary.IsDataSetEmpty(navData))
{
IEnumerable<DataRow> foundLinks = from link in navData.Tables[0].AsEnumerable()
where link.Field<string>("URL").ToLower() == searchURL
select link;

linkFound = (foundLinks.Any());
}

显示异常来自 Any() 调用的相关堆栈跟踪:

at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
at MyMethod in MySource.cs:line 259

最佳答案

您的问题不在于 Any() 是问题所在。您的问题是您尝试在查询中访问的字段很可能返回 null

我会检查 navData 不是 null 并且 Tables 不是 null 并且 Tables[0] 不是 null。 Any() 使用延迟执行,因此当您分配查询时,它不一定会在被请求之前得到处理,这恰好是在 Any() 被调用时。因此,在实际迭代之前,查询的任何问题都不会显现。

关于c# - 如何检查空的 IEnumerable<DataRow> 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7475094/

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