2013-02-13 30 views
0

我需要在我的數據庫的表列上執行交叉連接。我使用linq和C#來做到這一點。下面是我寫的代碼:基於用戶選擇列的通用交叉連接

var res = (from item_1 in set1 
      join item_2 in set_2 on new 
      { 
       item_1.columnA, 
       item_1.columnB, 
       item_1.columnC, 
       item_1.columnD, 
       item_1.columnE, 
       //etc... 
      } 
      equals new 
      { 
       item_2.columnA, 
       item_2.columnB, 
       item_2.columnC, 
       item_2.columnD, 
       item_2.columnE, 
       //etc... 
      } 
      select new { item_1,item_2}; 

我有一個asp.net頁面,用戶可以選擇他們想要的列交叉連接來進行的。查詢應該反映他們的選擇。有些用戶只希望使用其中的2列,而其他用戶會選擇10.

我顯然不想在某些switch語句中重複此查詢幷包含所選列。如果有這樣一種通用的方式,我會流浪。傳遞一個lambda表達式...我只是不知道這應該如何完成。 任何幫助將不勝感激。

+0

順便說一句,這不叫做交叉連接。交叉連接是未經過濾的笛卡爾產品。 – usr 2013-02-13 09:20:20

回答

0

看看Scott Gu關於Dynamic LinQ的這篇博文。

它不僅包含關於此事的解釋,還提供了鏈接到下載和示例。希望這可以幫助!

+0

這個圖書館建議的不是我正在尋找的東西。這將需要一些我試圖避免的複雜字符串連接。我更多地尋找包括lambda表達式和泛型的東西。 – 2013-02-13 09:08:02