var query = from r in list where r.Id == "" DefaultIfEmpty(String.Empty)
不起作用。
如何使用查询样式编写linq查询并使用DefaultIfEmpty方法?
答案 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
};