2014-04-03 21 views
0
List<string> values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<string>(ColumnName)).Distinct().ToList<string>(); 

我使用上面的查詢來讀取數據表中的特定列的所有值。 如果,如果我想讀的所有列,我必須處理所有案件system.data.enumerablerow收藏到列表<T>,在運行時間

foreach (string ColumnName in AllColumns) 
{ 
    List<string> values_ofColumn = null; 
    if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "String") 
    { 
     values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<string>(fieldAttribute)).Distinct().ToList<string>(); 
    } 
    if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "Double") 
    { 
     values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<double>(fieldAttribute).ToString()).Distinct().ToList<string>(); 
    } 
    if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "DateTime") 
    { 
     values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<DateTime>(fieldAttribute).ToString("MM/dd/yyyy HH:mm:ss")).Distinct().ToList<string>(); 
    } 
} 

爲什麼我加很多,如果else語句是... 我無法銘刻在MasterDataTableObject.Columns[ColumnName].DataTypeField<T> 我知道,這是編譯時間映射。

有沒有什麼辦法可以使用驅除掉,如果其他

謝謝

回答

1
foreach (string ColumnName in AllColumns) 
{ 
    List<string> values_ofColumn = null; 
    var coll = (
           from row in MasterDataTableObject.AsEnumerable() 
           select row[ColumnName] 
       ); 
    values_ofColumn = coll.Select(row => row.ToString()).Distinct().ToList<string>(); 
}