2010-02-24 41 views
0

我在我的EF模式中有一個關係* - *(由具有2個鍵的中間表設計)。 當我想在每個過濾(即:我想所有的細分市場由一個功能過濾),我執行這個查詢:Linq to Entities:relationship * - *

var requete = from mkt in ent.MARKETSEGMENT_MKT 
where mkt.FUNCTION2_FUN.Where(fu => fu.FUN_ID == FunId).FirstOrDefault().FUN_ID == FunId 

它的工作,但它的醜陋。如何爲已過濾的關係創建良好的查詢* - *?

謝謝

+0

你應該使用在加入您的許多一對多的關係...... – 2010-02-24 08:28:45

+0

@Tony,我堅決不同意這一點:http://blogs.teamb.com/craigstuntz/2010/01/13/38525/ – 2010-02-24 14:01:10

回答

0

It's almost never correct to use join在LINQ到實體(或LINQ to SQL中)。

既然你沒有指定你的實體集名稱,我不得不猜測。我希望這是有道理的:

var requete = from fun in ent.FUNCTION 
       where fun.FUN_ID == FunId 
       from mkt in fun.MARKETSEGMENT_MKT 
       select mkt; 

這裏最重要的一點是,你必須FUNCTIONMARKETSEGMENT之間的雙向關聯。用它!

+0

謝謝,我現在理解更好的概念:) – 2010-02-26 08:17:41

0

使用Join方法。

從nerddinner.com這個小小的例子可能幫助:

var dinners = from dinner in FindUpcomingDinners() 
     join i in db.NearestDinners(latitude, longitude) 
     on dinner.DinnerID equals i.DinnerID 
     select dinner; 
+0

我嘗試加入,但沒有成功 var requete =來自mkt in ent.MARKETSEGMENT_MKT 加入fun in ent.FUNCTION2_FUN在mkt.MKT_ID等於fun.MARKETSEGMENT_MKT。 <=我可以在這裏插入,這是一個IEnumerable,而不是一個Id – 2010-02-24 08:50:00

+0

也許嘗試此鏈接:http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx – Stefanvds 2010-02-24 13:01:00