为什么以下代码段未返回预期结果?
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);
data是一个包含数组的List,其中包含每行中的字符串。
此语句返回null。
我做错了什么?
答案 0 :(得分:1)
表达是完美的,因为它是。我不知道为什么它不起作用。
你可以让它变得更容易:
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();
请参阅测试人员http://ideone.com/ci8zw1
答案 1 :(得分:0)
Xanatos是对的......这是关于Null的价值..之前应该注意到了。 一个简单的空检查就足够了:
from d in data
from c in d
where c!=null && c.Length > 5
select d