0
我有下面的代碼從實例屬性的類的偉大工程回報XElement
對象:如何在構建項目數組時獲取集合中的所有元素?
public MyClass1 MyClass1 {get; set;}
public MyClass2 MyClass2 {get; set;}
var elements = new[]
{
//Calls to .GetXML() return an XElement instance
this.MyClass1.GetXML(),
this.MyClass2.GetXML()
};
return new XElement("Root",
elements.Where(el => el != null && !el.IsEmpty));
問題是,我想通過IList
引入集合發言權MyClass3
並就如何讓所有不知道將收藏品中的物品放入我的elements
陣列中。所以現在我想以下幾點:
public MyClass1 MyClass1 {get; set;}
public MyClass2 MyClass2 {get; set;}
public IList<MyClass3> MyClass3 {get; set;}
var elements = new[]
{
this.MyClass1.GetXML(),
this.MyClass2.GetXML(),
this.MyClass3.ToList().Select(x => x.GetXML()) //Not working
};
我一直在使用的Select
組合嘗試甚至改變IList
到List
只是爲了看看.ForEach
會工作,並且做了沒有。我得到的錯誤是:「沒有找到隱式類型數組的最佳類型」,無論我嘗試的方法如何。
如何將我的IList
屬性實例中的所有元素轉換爲elements
數組?任何幫助表示讚賞,謝謝!
編輯:訂購必須被保留(即MyClass1的,MyClass2,MyClass3),所以如果我介紹另一個元素MyClass4
它必須來MyClass3
後。推理是因爲我正在編寫一個具有特定結構的XML文檔。
我應該提到(編輯的OP),因爲我正在撰寫XML,訂單很重要。如果我按順序介紹'MyClass4'和'MyClass3'必須先來嗎?如果我使用'.Concat',那麼如果放在原始數組中,'MyClass4'會出現在MyClass3之前。有沒有辦法確保訂單得到保留? – atconway 2013-02-08 14:10:10
@atconway:在這種情況下,你需要在具有MyClass3的'Concat'之後另一個'Concat'與另一個數組* *。當然,另一種選擇是不使用LINQ:只需創建一個'List',併爲每個想要的項目調用Add或AddRange。 –
2013-02-08 14:13:37
有趣但不確定我該怎麼做。我的'GetXML'方法是在基類中定義的,它規定了'XElement'的返回類型,所以我不能改變返回類型'List'。此外,我不必使用LINQ,所以如果還有其他方法,我也可以使用。 –
atconway
2013-02-08 14:21:08