有人可以解释如何在LINQ中使用 DefaultIfEmpty() . 我准备了一些材料,但仍然需要一些坚实的东西来看看它的用途 .
DefaultIfEmpty()
它基本上返回一个带有单个元素的集合,以防源集合为空 .
var numbers = new int[] {1, 2, 3}; var aNumber = numbers.First();
返回1
但
var numbers = new int[]; var aNumber = numbers.DefaultIfEmpty(12).Single();
当集合为空时返回12
不同之处在于,当FirstOrDefault返回一个对象时,DefaultIfEmpty返回一个对象集合 . 如果没有找到结果,则DefaultIfEmpty仍返回具有默认值的单个项的Enumerable,而FirstOrDefault返回T本身 .
如果需要始终需要收集结果,则使用DefaultIfEmpty,例如创建外连接 . 如果您总是需要一个对象(而不是集合)结果,则使用FirstOrDefault,例如,如果您想在搜索ID或唯一电子邮件等内容时获取第一个项目(或仅限项目),并希望返回默认的空项目如果找不到您要搜索的项目 .
2 回答
它基本上返回一个带有单个元素的集合,以防源集合为空 .
返回1
但
当集合为空时返回12
不同之处在于,当FirstOrDefault返回一个对象时,DefaultIfEmpty返回一个对象集合 . 如果没有找到结果,则DefaultIfEmpty仍返回具有默认值的单个项的Enumerable,而FirstOrDefault返回T本身 .
如果需要始终需要收集结果,则使用DefaultIfEmpty,例如创建外连接 . 如果您总是需要一个对象(而不是集合)结果,则使用FirstOrDefault,例如,如果您想在搜索ID或唯一电子邮件等内容时获取第一个项目(或仅限项目),并希望返回默认的空项目如果找不到您要搜索的项目 .