首页 文章

LINQ中的DefaultIfEmpty

提问于
浏览
36

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

2 回答

  • 7

    它基本上返回一个带有单个元素的集合,以防源集合为空 .

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

    返回1

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

    当集合为空时返回12

  • 37

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

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

相关问题