결과가 비어있을 때 LINQ는 무엇을 반환합니까?
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()
오버 헤드가 많이 발생하지만 쿼리에서 반환 된 객체를 잡을 수 있습니다.
var lst = new List<int>() { 1, 2, 3 };
var ans = lst.Where( i => i > 3 );
(ans == null).Dump(); // False
(ans.Count() == 0 ).Dump(); // True
.ToList는 빈 목록을 반환합니다. (new List ()와 동일);
Linq-to-SQL에서 결과가없는 쿼리의 첫 번째 요소를 가져 오려고하면 sequence contains no elements
오류가 발생합니다. 언급 된 오류가과 같지 않다고 확신 할 수 있습니다 object reference not set to an instance of an object
. 결론적으로, null sequence contains no elements
은 항상 말할 것이라고 말할 수 없으므로 null을 반환하지 않습니다 object reference not set to an instance of an object
.)
예외는 발생하지 않으며 빈 목록이 표시됩니다.
여기의 다른 게시물은 결과가 "빈"IQueryable이라는 것을 분명히했으며 ToList ()는 빈 목록 등으로 올바르게 변경됩니다.
빈 열거 형을 보내면 던질 수 있으므로 일부 연산자에주의하십시오. 당신이 그들을 묶을 때 발생할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/1191919/what-does-linq-return-when-the-results-are-empty
'Programing' 카테고리의 다른 글
세트에서 요소 얻기 (0) | 2020.03.19 |
---|---|
뷰에서 여러 모델 (0) | 2020.03.19 |
Javascript를 사용하여 CSS 파일을로드하는 방법은 무엇입니까? (0) | 2020.03.19 |
사전에 사전을 추가 하시겠습니까? (0) | 2020.03.19 |
C에서 >>> = 연산자는 무엇입니까? (0) | 2020.03.19 |