4 回答

TA貢獻1821條經驗 獲得超5個贊
沒有明確的保證,但按照慣例,包括所有 LINQ 方法在內的所有 LINQ 方法GroupBy
都將始終返回非空條目,因此null
可以安全地省略 -check。否則查詢的可組合性將被破壞,您也會null
在文檔中看到很多 -checks,例如在Group query results中。
每個分組結果也將至少有一個條目,否則它將違反其合同。

TA貢獻1836條經驗 獲得超4個贊
是的,根據 agroup
在這種情況下的含義的定義,組必須既非空也不為空,并且組的序列(IEnumerable
或IQueryable
)必須是非空的。
考慮一下,一個空組從哪里來?一個組必須包含那些根據為匹配定義的任何標準都相同的項目。如果在特定的可能鍵上沒有任何匹配項,則它不能包含在組序列中。因此,它不能為空或空,當然。
同時,實際結果GroupBy
必須有所有這些組,所以雖然可能有 0 個組(如果有空輸入),但不能有null
組。
刪除空檢查和空檢查是安全的(不能保證空檢查不會重新查詢,盡管這不太可能實現)。
空性檢查總是可以安全地省略,因為foreach
在空序列的迭代器上,它只會false
從第一個得到 a ,因此無論如何MoveNext()
都不會在其中運行代碼。foreach

TA貢獻1851條經驗 獲得超4個贊
您還可以檢查集合中有多少元素(組本身是一個集合,并且所有組groupResult也是一個集合)。所以你可以檢查是否有元素。
看看下面的代碼:
if(groupResult.Count() > 0) { }
foreach (var group in groupResult)
if(group.Count() > 0) { }
將它與檢查null值結合起來:
if(group != null && group.Count() > 0) { }
這里短路將保證 if groupis nullthen 它不會檢查在這種情況下可能引發異常的第二個條件。
- 4 回答
- 0 關注
- 208 瀏覽
添加回答
舉報