var query = from r in list where r.Id == "" DefaultIfEmpty(String.Empty)
不起作用。
如何编写具有查询样式的 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
您可能会看到:如何:执行左外连接(C# 编程指南)
对于您的情况,如果 r.Id 为空,您想选择空字符串,您可以这样做:
var query = from r in list
select new
{
ID = r.Id == null ? string.Empty : r.Id
};