[英]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
string
或null
string[]
嗎?
var allRowsHavingSomeWordWithLengthGreaterThanFive = (from d in data
where d != null
from c in d
where c != null && c.Length > 5
select d).ToArray();
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.