2013-08-15 3 views
0

예상되는 결과를 반환하지 않는 이유는 무엇입니까?LINQ 여기서 예상 값을 반환하지 않습니다.

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는 각 행의 문자열을 포함하는 배열을 포함하는 목록입니다.

이 문은 null을 반환합니다.

내가 뭘 잘못하고 있니?

+0

@BrokenGlass 가입해야합니까? 보시다시피 두 번째 from 절이 있습니다. "from c in d"는 참여해야합니까 ... 아니면 잘못 되었습니까? –

+0

어떻게 값을 버리면 * * 더 명확 해 집니까? 값이 문제의 중심에있는 것처럼 보입니다. – Sheridan

답변

1

표현은 완벽합니다. 나는 그것이 왜 효과가 없어야하는지 모른다.

당신은 좀 더 쉽게로 만들 수 있습니다 :

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

그러나 나는 이유를 볼 수 없습니다.

아마도 문제는 nullstring 또는 nullstring[]이 있습니까?

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

+0

@ xanatos 빠른 응답을 보내 주셔서 감사합니다! 하지만 나는 개체에 대한 linq에 대해 이야기하고있다. (DB 접근이 없다) –

0

Xanatos 그것은이 널 값에 관하여 ... 맞다 .. 이전주의해야한다. 간단한 null 확인으로 충분합니다.

from d in data 
from c in d 
where c!=null && c.Length > 5 
select d 
관련 문제