2013-11-01 73 views
5

我有一張表格佈局,如圖所示。一個主表(用戶)和兩個多對多表(首選項位置)與聯結表。我已經建立了數據模型的正確關係,以便從這些M-2-M表選擇....加入實體框架中的多對多表格

enter image description here

報告工具,我的寫作可以讓用戶選擇(從清單)任何用戶首選項或用戶位置。我想要做的只是選擇用戶表中的記錄,其中首選項位置包含至少一個選擇。

這可能與Linq查詢? (我以前做這個的SQL,但它似乎更容易在LINQ to寫,直到我得到這個部分!)

非常感謝,

編輯:的Visual Studio 2012,實體框架4時,SQL Server 2008 R2

+0

像'Users.Where(X => Preferences.Any(Y => y.UserID == x.UserID)|| Locations.Any(Y => y.UserID == X .UserID));'? –

回答

3
​​

這將生成兩個EXISTS子查詢。 lambda語法:

Users.Where(u => u.Locations.Any(l => l.Name == value) || 
       u.Preferences.Any(p => p.Title == value)); 
+1

謝謝!這已經讓我的大腦油然而生了。 : -/ – Simon

+0

正如後面的想法,如果我有一個動態的值列表進行比較 - 是否有比使用l.Name ==「xxx」||更好的書寫方式? l.Name ==「yyy」|| l.Name ==「zzz」? – Simon

+1

@Simon你可以創建值列表{「xxx」,「yyy」,「zzz」}並檢查這個列表是否包含位置或首選值:u.Locations.Any(l => values.Contains(l .NAME))'。我相信這應該適用於子查詢。 –