爲了防止你想知道這是怎麼產生的,我正在使用Entity Framework中的一些結果集。如何將IEnumerable的IEnumerables中的所有元素連接在一起?
我有一個對象是IEnumerable<IEnumerable<string>>
;基本上是一串字符串列表。
我想將所有的字符串列表合併成一個大的字符串列表。
在C#.net中執行此操作的最佳方法是什麼?
爲了防止你想知道這是怎麼產生的,我正在使用Entity Framework中的一些結果集。如何將IEnumerable的IEnumerables中的所有元素連接在一起?
我有一個對象是IEnumerable<IEnumerable<string>>
;基本上是一串字符串列表。
我想將所有的字符串列表合併成一個大的字符串列表。
在C#.net中執行此操作的最佳方法是什麼?
使用LINQ的SelectMany方法:
IEnumerable<IEnumerable<string>> myOuterList = // some IEnumerable<IEnumerable<string>>...
IEnumerable<String> allMyStrings = myOuterList.SelectMany(sl => sl);
約爲怎麼在這裏上很清楚(因爲我最討厭的人以爲這是某種巫術的思想,我覺得不好,其他一些人刪除相同的答案):
SelectMany是通過語法糖看起來像IEnumerable<T>
上的特定類型的實例方法)的extension method(靜態方法。它將枚舉的原始枚舉和函數轉換爲枚舉的每一項。
因爲項目是已經枚舉,轉換函數是簡單 - 只是返回輸入(sl => sl
的意思是「取了一個名爲sl
paremeter並返回」)。隨後的SelectMany提供一個枚舉在每個這些反過來又導致你的「扁平化」名單..
謝謝。這是我正在尋找的。 – 2012-08-14 19:05:20
使用Concat
方法:
firstEnumerable.Concat(secondEnumerable)
使用SelectMany
將迫使這兩個枚舉中的每個元素的額外評估你不需要。
['Enumerable.SelectMany'](http://msdn.microsoft.com/en-US/library/bb534336.aspx) – 2012-08-14 18:04:57