Linq to Entities:relationship * - *

时间:2010-02-24 08:20:48

标签: c# linq entity-framework linq-to-entities

我的EF Schema上有一个关系* - *(由带有2个键的中间表设计)。 当我想要对每个过滤器进行过滤时(即:我希望所有市场分段都由一个函数过滤),我执行此查询:

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

它有效,但很难看。如何为过滤关系制定一个好的查询* - *?

谢谢

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

LINQ to Entities(或LINQ to SQL)中的

It's almost never correct to use join

由于您没有指定实体集名称,我必须猜测。我希望这是有道理的:

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

重要的一点是,FUNCTIONMARKETSEGMENT之间存在双向关联。使用它!