What does LINQ return when the results are empty
我有一个关于LINQ查询的问题。通常,查询返回
1 2 3 4 5 | 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(); |
我知道这是一个非常简单的问题,但我暂时没有虚拟机。
它将返回一个空的可枚举值。它不会是空的。你可以睡觉的声音:)
您还可以检查
1 | if (!YourResult.Any()) |
只是需要注意的是,
1 2 3 4 5 | 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中,如果您试图获取查询的第一个元素,但没有结果,则会得到
这里的其他文章已经清楚地表明,结果是一个"空"的iQueryable,to list()将正确地更改为空列表等。
一定要小心一些运算符,因为如果您向它们发送一个空的可枚举值,它们将抛出。当你把它们连在一起时,就会发生这种情况。
它不会引发异常,您将得到一个空列表。