LINQ中的DefaultIfEmpty

时间:2012-01-13 16:51:07

标签: .net linq

有人可以解释如何在 LINQ 中使用DefaultIfEmpty()。我准备了一些材料,但仍然需要一些可靠的东西来看看它的用途。

2 个答案:

答案 0 :(得分:37)

如果源集合为空,它基本上返回一个带有单个元素的集合。

var numbers = new int[] {1, 2, 3};
var aNumber = numbers.First();

返回1

但是

var numbers = new int[];
var aNumber = numbers.DefaultIfEmpty(12).Single();

在集合为空时返回12

答案 1 :(得分:7)

不同之处在于,当FirstOrDefault返回一个对象时,DefaultIfEmpty返回一个对象集合。如果没有找到结果,则DefaultIfEmpty仍返回一个具有默认值的单个项的Enumerable,而FirstOrDefault返回T本身。

如果需要始终需要集合结果,则使用DefaultIfEmpty,例如创建外部联接。如果您总是需要对象(而不是集合)结果,则使用FirstOrDefault,例如,如果您想在搜索ID或唯一电子邮件等内容时获取第一个项目(或仅限项目),并且想要返回默认的空项目如果找不到您要搜索的项目。