[英]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.