2014-09-10 87 views
1

而不是使用foreachfor找到忽略逗號的最後或第一個元素。我確信必須有一種方法可以輕鬆地連接列表DataRows的特定列。如何使用逗號加入列表<DataRow>的特定列?

這裏是我曾嘗試

List<DataRow> rows; 

string forms = rows.Aggregate(string.Empty, (current, row) => current + row[1] + ", "); 

輸出:A,B,C,d,

string forms = rows.Aggregate(string.Empty, (current, row) => current + ", " + row[1]); 

輸出:A,B,C,d

也試過這個建議:

string forms = string.Join(", ", Array.ConvertAll(rows.ToArray(), i => i.ToString())); 

產量:S ystem.Data.DataRow,的System.Data.DataRow,的System.Data.DataRow,的System.Data.DataRow <>

什麼被通緝:

輸出A,B,C,d

+0

我很好奇,什麼是錯與選項1,然後除去最後一個字符。 – DidIReallyWriteThat 2014-09-10 12:19:07

回答

5

你忘了幫row[1],如果你做row.ToString()輸出類名DataRow

string forms = string.Join(", ", rows.Select(row => row[1].ToString()).ToArray()); 

,如果你是.NET> 4,你可以跳過.ToArray()因爲有一個IEnumerable超載

string forms = string.Join(", ", rows.Select(row => row[1].ToString())); 

或ConvertAll

string forms = string.Join(", ", Array.ConvertAll(rows.ToArray(), i => i[1].ToString())); 

的注意事項:Aggregate扔System.InvalidOperationException:「序列包含任何元素,」如果沒有的元素,而不是String.Join返回空字符串

0
string forms = rows.Select(row => row[1]) 
        .Aggregate((current, next) => current + ", " + next); 

這將首先轉換爲值並將它們連接起來。分兩步來更容易。

+1

我會用'string.Join()'而不是'Aggregate()',但'Select()'顯然是這樣做的方法。 – 2014-09-10 12:20:45