2012-03-16 43 views
2

我試圖編寫一個方法,它允許我通過不同的列搜索不同的DataTable。在LINQ查詢中動態設置列名

到目前爲止,我有以下幾點:

string selectedValue; 
string searchColumn; 
string targetColumn; 

     var results = (from a in dt.AsEnumerable() 
         where a.Field<string>(searchColumn) == selectedValue 
         select new 
         { 
         targetColumn = a.Field<string>(targetColumn) 
         }).Distinct(); 

哪一種能夠完成任務,但我留下了列名作爲targetColumn,而不是我想實際的列名。

有什麼辦法可以解決這個問題嗎?

在此先感謝

CM

+0

我認爲不是,這個問題類似於 http://stackoverflow.com/questions/6044482/setting-anonymous-type-property-name – Brouwer 2012-03-16 10:46:30

回答

1

我做一個LINQ數據表

public List<DataRow> Where(this DataTable dt, Func<DataRow, bool> pred) 
{ 
    List<DataRow> res = new List<DataRow>(); 
    try { 
     if (dt != null && dt.Rows.Count > 0) { 
      for (i = 0; i <= dt.Rows.Count - 1; i++) { 
       if (pred(dt(i))) { 
        res.Add(dt(i)); 
       } 
      } 
     } 
    } catch (Exception ex) { 
     PromptMsg(ex); 
    } 
    return res; 
} 

使用

var RowsList = dt.Where(f => f("SomeField").toString() == "SomeValue" || 
          f("OtherField") > 5);