Programing

결과가 비어있을 때 LINQ는 무엇을 반환합니까?

lottogame 2020. 3. 19. 08:15
반응형

결과가 비어있을 때 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

(덤프는 LinqPad 에서 제공 )


.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

반응형