其中是linq查询样式的DefaultIfEmpty

本文关键字:样式 DefaultIfEmpty 查询 linq | 更新日期: 2023-09-27 18:07:06

var query = from r in list where r.Id == "" DefaultIfEmpty(String.Empty)

不工作

我如何写一个linq查询查询风格和使用DefaultIfEmpty方法?

其中是linq查询样式的DefaultIfEmpty

假设您的列表包含您想要的类型Item:

// define your default item
var defaultItem = new Item { ... };
var query = (from r in list where r.Id == "" select r).DefaultIfEmpty(defaultItem);

或方法语法

var query = list.Where( r => r.Id == "" ).DefaultIfEmpty(defaultItem);

但是如果你要选择Item的特定字符串属性那么你可能需要像

这样的属性
var query = (from r in list where r.Id == "" select r.StringProperty)
            .DefaultIfEmpty(string.Empty);

DefaultIfEmpty通常使用JOINS,(外连接)。你可以参见:How to:执行左外连接(c#编程指南)

对于你的情况,它似乎你想选择空字符串,如果r.Id是空的,你可以你可以做:

var query = from r in list
            select new 
               {
                 ID =  r.Id == null ? string.Empty : r.Id
               };