当结果为空时,LINQ会返回什么结果?

我有一个关于LINQ查询的问题。 通常,查询返回一个IEnumerable类型。 如果返回为空,则不确定它是否为空。 我不确定如果在IEnumerable结果中找不到任何内容,下面的ToList()是否会抛出一个异常或只是一个空的List <string>?

   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可用。


它将返回一个空的枚举。 它不会是空的。 你可以睡觉声音:)


您也可以检查.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)

链接地址: http://www.djcxy.com/p/53707.html

上一篇: What does LINQ return when the results are empty

下一篇: Deferred execution and eager evaluation