繁体   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