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

不起作用。

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

4

2 回答 2

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);
于 2013-04-02T11:14:22.863 回答
1

DefaultIfEmpty通常与,(外连接)一起使用。JOINS您可能会看到:如何:执行左外连接(C# 编程指南)

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

var query = from r in list
            select new 
               {
                 ID =  r.Id == null ? string.Empty : r.Id
               };
于 2013-04-02T11:10:30.617 回答