2

我似乎無法弄清楚如何正確編寫此查詢。我嘗試了各種組合,但沒有任何工作。幫助實體查詢

下面是我的數據庫模型的相關部分: alt text

我需要選擇匹配給定的類別和集團,以及那場比賽給定年份的產品,品牌,型號,子模型。這個我已經做過如下:

ItemList = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1").Include("LookupYearMakeModels") From G In P.Groups Where G.Category = Cat And G.Grp = Group From Y In P.LookupYearMakeModels Where Y.Year = YMM.Year And Y.Make = YMM.Make And Y.Model = YMM.Model And Y.Submodel = YMM.Submodel Select P 

我現在還可以選擇匹配類別的產品,和集團卻是通用(Product.Univeral = TRUE)。

我目前正在寫兩個查詢,上面和下面的一個。我簡單地使用ItemList.AddRange(ItemList2)合併兩個結果

ItemList2 = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1") where P.Universal From G In P.Groups Where G.Category = Cat And G.Grp = Group Select P 

但我想這兩個查詢合併成一個,避免合併的結果。我該怎麼做?

感謝您的幫助!

+1

我會使用類似組保留字作爲我的對象之一的名稱望而卻步。 – JBrooks 2013-10-20 18:13:47

回答

2

我試圖建立一個類似的模型,我相信這個工程。在此我選擇具有與給定類別和組匹配的組的產品,並且具有匹配的年/製造/型號/子模型是通用的。

ItemList = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1").Include("LookupYearMakeModels") 
      Where P.Groups.Any(Function(G) G.Category = Cat And G.Grp = Group) _ 
       And (_ 
         P.LookupYearMakeModels.Any(Function(Y) Y.Year = YMM.Year And Y.Make = YMM.Make And Y.Model = YMM.Model And Y.Submodel = YMM.Submodel) _ 
         Or _ 
         P.Universal = True _ 
        ) 
      Select P 

HTH

+0

像魅力一樣工作。謝謝。 – mga911 2010-11-15 18:29:44

+0

@ mga911,太棒了,很高興它的工作。這是否意味着我得到賞金:)? – 2010-11-15 19:03:28

+0

是的,我將你的答案標記爲接受的答案。如果它沒有把你的積分歸功於你,那麼明天開放獎金期結束時你可能會得到它們。再次感謝 – mga911 2010-11-16 19:28:26

0

您可以使用IQueryable.Union Method:

ItemList = (From P In gDataContext.Products         
            .Include("Groups.Category1") 
            .Include("LookupYearMakeModels") 
      From G In P.Groups 
       Where G.Category = Cat And G.Grp = Group 
      From Y In P.LookupYearMakeModels 
       Where Y.Year = YMM.Year 
        And Y.Make = YMM.Make And Y.Model = YMM.Model 
        And Y.Submodel = YMM.Submodel 
      Select P) 
      .Union(
      From P In gDataContext.Products      
            .Include("Groups.Category1") 
      Where P.Universal 
      From G In P.Groups Where G.Category = Cat And G.Grp = Group 
      Select P) 
+0

我很欣賞答案,但我正在尋找一種方法將兩個查詢合併到一個查詢中,而不是合併結果。 – mga911 2010-11-08 16:50:13