我需要查詢具有未知列的數據表以返回列的子集。如何使用動態列查詢數據表
很明顯,這對於數據視圖來說很簡單,但對於LINQ來說呢?
我將傳遞一個數據表和列名作爲參數應該做查詢的方法。
我沒有LINQ的經驗,我迄今爲止看到的所以看起來LINQ的唯一動態部分將是WHERE過濾器,而不是哪些列被選中。
我錯了嗎?
如果可以,請提供樣品給我?
我需要查詢具有未知列的數據表以返回列的子集。如何使用動態列查詢數據表
很明顯,這對於數據視圖來說很簡單,但對於LINQ來說呢?
我將傳遞一個數據表和列名作爲參數應該做查詢的方法。
我沒有LINQ的經驗,我迄今爲止看到的所以看起來LINQ的唯一動態部分將是WHERE過濾器,而不是哪些列被選中。
我錯了嗎?
如果可以,請提供樣品給我?
這裏是你如何可以選擇使用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);
}
}
如果您需要選擇列的隨機數,那麼這將得到一點點麻煩,但希望這會讓你朝着正確的方向前進。
我還沒有使用它,但.NET 3.5/VS2008附帶的動態LINQ庫允許您擁有基於字符串的select子句。這是Scott Guthrie的博客link(其中還包括下載庫的鏈接)。
來自Scott博客的圖像顯示了一個動態LINQ示例的示例,它表明表達式的每個主要子句都可以是生成的字符串。
希望這有助於!