我有一個具有兩個感興趣的屬性的對象的現有集合。兩個屬性都是相同的類型。我想創建一個由屬性值組成的新序列。這裏有一種方法(我使用的元組,而不是我的簡單的自定義類型):創建包含多個屬性值的序列
var list = new List<Tuple<string, string>>
{ Tuple.Create("dog", "cat"), Tuple.Create("fish", "frog") };
var result =
list.SelectMany(x => new[] {x.Item1, x.Item2});
foreach (string item in result)
{
Console.WriteLine(item);
}
結果:
dog cat fish frog
這給了我我想要的結果,但有沒有更好的方式來完成這個(特別是,不需要創建數組或集合)?
編輯:
這也適用,在遍歷集合兩倍的成本:
var result = list.Select(x => x.Item1).Concat(list.Select(x => x.Item2));
什麼是「結果[你]想要」?有鋸齒陣列?創建一個匿名類型列表?... – 2011-12-31 01:46:20
冒着明顯的風險,你可以做'var result = new [] {「dog」,「cat」,「fish」,「frog」};'但是如果你必須從元組列表開始,那麼你看起來很棒。 – 2011-12-31 01:49:57
@jmh_gr - 我只是爲了清晰起見編輯了這個問題。我想要一個由'originalListFirstItem.StringProperty1','originalListFirstItem.StringProperty2','originalListSecondItem.StringProperty1','originalListSecondItem.StringProperty2'等組成的'IEnumerable'等。 –
TrueWill
2011-12-31 01:52:32