LINQ 쿼리에 대한 질문이 있습니다. 일반적으로 쿼리는IEnumerable<T>
유형. 반환 값이 비어있는 경우 null인지 아닌지를 확인하십시오. 나는 다음과 같은 것이 확실하지 않다.ToList()
예외를 던지거나 단지 비어있게 만듭니다.List<string>
아무것도 발견되지 않은 경우IEnumerable
결과?
List<string> list = {"a"};
// is the result null or something else?
IEnumerable<string> ilist = from x in list where x == "ABC" select x;
// Or directly to a list, exception thrown?
List<string> list1 = (from x in list where x == "ABC" select x).ToList();
나는 그것이 매우 간단한 질문이라는 것을 알고 있지만 당분간 VS를 사용할 수는 없습니다.
빈 열거 형을 반환합니다. 그것은 null이되지 않을 것이다. 당신은 수면 소리 :)
다음을 확인할 수도 있습니다..Any()
방법:
if (!YourResult.Any())
그 메모 만.Any
여전히 데이터베이스에서 레코드를 검색합니다. 하고있는.FirstOrDefault()/.Where()
오버 헤드가 많지만 쿼리에서 반환 된 객체를 잡을 수 있습니다.
.Any()
일치하는 레코드가 있다면 알려줄 것입니다. 실제 쿼리를 수행하면 특정 값을 찾기 위해 null 일 수 있습니다..Any()
아니다. - vapcguy
var lst = new List<int>() { 1, 2, 3 };
var ans = lst.Where( i => i > 3 );
(ans == null).Dump(); // False
(ans.Count() == 0 ).Dump(); // True
(덤프는LinqPad)
Count()
또한 속성 일뿐만 아니라 방법이기도합니다. - heyNow
.ToList는 빈 목록을 반환합니다. (새로운 List ()와 동일);
Linq-to-SQL에서 결과가없는 쿼리의 첫 번째 요소를 얻으려고하면 얻을 수 있습니다.sequence contains no elements
오류. 언급 한 오류가 다음과 같지 않음을 확신 할 수 있습니다.object reference not set to an instance of an object
.
결론적으로 아니오, null을 말할 수 없으므로 null을 반환하지 않습니다.sequence contains no elements
항상 말할 것이다.object reference not set to an instance of an object
;)
다른 게시물은 결과가 ToList ()가 빈 목록으로 바뀌는 "빈"IQueryable이라는 것을 분명히했습니다.
연산자 중 일부는주의해야합니다. 빈 연산자를 보낸다면 던져 버릴 것입니다. 당신이 그들을 함께 묶을 때 일어날 수 있습니다.
그것은 예외를 던지지 않을 것이다, 당신은 빈 목록을 얻을거야.