2

新しい空白の匿名型を挿入する必要がありますが、linq クエリによって返される他の匿名型のリストに null ではありません。それは可能ですか?私が得ることができるのはヌルだけです

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 に答える