2012-12-17 37 views
2

我需要插入一個新的空白,但非null匿名類型到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)); 
//? 

回答

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查詢創建的一個。