具有linq查询样式的DefaultIfEmpty在哪里

时间:2013-04-02 11:07:44

标签: c# linq

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

不起作用。

如何使用查询样式编写linq查询并使用DefaultIfEmpty方法?

2 个答案:

答案 0 :(得分:2)

假设您的列表包含您想要的类型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);

答案 1 :(得分:1)

DefaultIfEmpty 通常JOINS,(外部联接)一起使用。 您可能会看到:How to: Perform Left Outer Joins (C# Programming Guide)

对于你的情况,如果r.Id为null,你想要选择空字符串,你可以这样做:

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