2011-03-10 11 views
3

我需要查詢具有未知列的數據表以返回列的子集。如何使用動態列查詢數據表

很明顯,這對於數據視圖來說很簡單,但對於LINQ來說呢?

我將傳遞一個數據表和列名作爲參數應該做查詢的方法。

我沒有LINQ的經驗,我迄今爲止看到的所以看起來LINQ的唯一動態部分將是WHERE過濾器,而不是哪些列被選中。

我錯了嗎?

如果可以,請提供樣品給我?

回答

4

這裏是你如何可以選擇使用LINQ to DataSet中的任何兩列快速樣品:

public static void SelectRandomColumns(DataTable dataTable, string col1, string col2) 
{ 
    // Select into an anonymous type here, but you could 
    // select into a custom class 
    var query = from row in dataTable.AsEnumerable() 
       select new 
       { 
        p1 = row[col1], 
        p2 = row[col2] 
       }; 

    // Do whatever you need to do with the new collection of items 
    foreach (var item in query) 
    { 
     Console.WriteLine("{0}: {1}, {2}: {3}", col1, item.p1, col2, item.p2); 
    }   
} 

如果您需要選擇列的隨機數,那麼這將得到一點點麻煩,但希望這會讓你朝着正確的方向前進。

1

我還沒有使用它,但.NET 3.5/VS2008附帶的動態LINQ庫允許您擁有基於字符串的select子句。這是Scott Guthrie的博客link(其中還包括下載庫的鏈接)。

來自Scott博客的圖像顯示了一個動態LINQ示例的示例,它表明表達式的每個主要子句都可以是生成的字符串。

enter image description here

希望這有助於!