簡體   English   中英

如何檢查空的IEnumerable <DataRow>集合?

[英]How do I check for an empty IEnumerable<DataRow> collection?

根據同一問題的答案: 如何檢查IEnumerable <DataRow>返回null或有任何行? 我發現大多數谷歌搜索結果,你可以使用.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不為nullTables[0]不為null。 Any()使用延遲執行,因此當您分配查詢時,它不一定會被請求處理,直到請求它為止,這恰好是在調用Any()時。 因此,在實際迭代之前,查詢的任何問題都不會顯現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM