2

我需要在 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));
//?
4

1 回答 1

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 查询创建的匿名类型相同。

于 2012-12-17T23:08:44.453 回答