2011-06-29 18 views
1

數據庫列包含下列值
SampleColumnValues
T1
T2
T3,T4
T5,T6
T7
T8
的LINQ:分割字符串列的內容,並把它添加到由選擇返回的數組(O => o.ColumnName)

當,我嘗試讀取這些值,使用IQueryable.Select()方法從數據庫獲取此特定列並使用ToArray()將其轉換爲數組是完全可能的。
但是,我還需要最初返回的數組中的逗號分隔值作爲單獨的數組元素。

現在,我有一個單獨的方法來做額外的分割。
我可以通過庫存方法獲得相同的結果嗎?

得到的數組我需要的應該是像{T1, T2, T3, T4, T5, T6, T7, T8}

回答

2
string[] input = new string[] { "T1", "T2", "T3,T4", "T5,T6", "T7", "T8" }; 

string[] output = input.SelectMany(item => item.Split(',')).ToArray(); 
0

這可以通過使用聚合函數來完成...
...Select(o => o.ColumnName).Aggregate((w, n) => w + "," + n).Split(',');

+0

沒有必要爲了做骨料調用ToArray的() - 這是一種浪費。作爲一個整體,它並不是非常優化的 - 你根本不需要連接(看我的回答) –

+0

@fiver:你說得對,我確實把它從實現的解決方案中刪除了,忘記了在這裏擺脫它。 – Nauman