2010-07-15 50 views
2

我有行集合和列名作爲列表,有沒有辦法將使用委託的所有列名傳遞給單個行並將值作爲集合? 還是有其他最好的辦法來實現這一目標?LinQ數據行和列集合C#

回答

3

你是說你有一個DataRow,你想在每列中的值?

然後,所有你需要的是這樣的:

object[] values = row.ItemArray; 

如果只想從具體列中的值,我建議一些LINQ的魔法給他們你的Dictionary<string, object>形式:

IEnumerable<string> columnNames = GetDesiredColumnNames(); 

var values = columnNames 
    .ToDictionary(name => name, name => row[name]); 

當然,你也可以使用同樣的LINQ魔術得到一個Dictionary<string, object>所有列(如果object[]是不夠描述的,因爲你不喜歡):

IEnumerable<string> columnNames = row.Table.Columns 
    .Cast<DataColumn>() 
    .Select(column => column.ColumnName); 

var values = columnNames 
    .ToDictionary(name => name, name => row[name]); 
+0

那是正確的丹,魔術確實工作真棒:-)。謝謝。 – Webbies 2010-07-15 13:30:03