我需要将一个新的空白但非空的匿名类型插入到linq查询返回的其他匿名类型的列表中。那可能吗?我所能获得的只是空值
var something =
( from a in x.As
where x != null
join b in x.Bs
on a.key equals b.key
select new
{
a.prop1,
a.prop2,
b.prop1,
b.prop2,
b.prop3
}).ToList();
// insert blank
//something.InsertRange(0, something.DefaultIfEmpty());
//something.InsertRange(0, something.Take(0));
//?
答案 0 :(得分:1)
我不知道在单个查询中执行此操作的方法,因为匿名类型的默认值为null
。我要做的是预先创建一个“默认”项目,并在必要时附加它:
var blank = new {
prop1 = default(string), // can't use null
prop2 = default(string), // because the type cannot be inferred
prop3 = default(string),
prop4 = default(string)
};
var something = /*...*/.ToList();
if(!something.Any())
something.Add(blank);
请注意,只要字段名称匹配(名称和类型),blank
将与Linq查询创建的匿名类型具有相同的匿名类型。