簡體   English   中英

LINQ不返回期望值的地方

[英]LINQ where does not return expected values

為什么以下代碼段未返回預期結果?

List<string[]> data
//filling list with some values (left here out to make problem more clear)

var allRowsHavingSomeWordWithLengthGreaterThanFive = (from d in data
                         from c in d
                         where c.Length > 5
                         select d);

數據是一個包含數組的列表,該數組的每一行都包含字符串。

該語句返回空值。

我究竟做錯了什么?

這種表達是完美的。 我不知道為什么它不起作用。

您可以通過以下方法使它更容易一些:

var allRowsHavingSomeWordWithLengthGreaterThanFive = 
         from d in data
         where d.Any(q => q.Length > 5)
         select d;

但是我不明白為什么。

也許問題在於存在null stringnull string[]嗎?

var allRowsHavingSomeWordWithLengthGreaterThanFive = (from d in data
                                                      where d != null
                                                      from c in d
                                                      where c != null && c.Length > 5
                                                      select d).ToArray();

參見測試儀http://ideone.com/ci8zw1

Xanatos是正確的...它與Null值有關。應該早一點注意到。 一個簡單的空檢查就足夠了:

from d in data
from c in d
where c!=null &&  c.Length > 5
select d

暫無
暫無

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

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