我有一个表Product。产品与ProductDescription以一对多的关系相关。每个产品的ProductDescription可以有多行。如果产品描述有多个翻译,它将有多行。产品与语言有多对一的关系。语言具有语言代码(en,es等)以及LanguageId(也可以在ProductDescription中找到)。将条件应用于Linq中的预先加载(包含)请求到实体
我想让我的用户能够请求产品,并进一步告诉应用程序只返回特定语言的描述。
我在Linq to Entities中完成了这个任务。我想产生这样的SQL:
SELECT * FROM Product p
JOIN ProductDescription pd ON p.ProductId = pd.ProductId
JOIN (SELECT * FROM Language WHERE AlternateCode = 'es') AS l ON pd.LanguageId = l.LanguageId
(AlternateCode是语言代码字段名)
有谁知道如何做到这一点?我现在留下的是拉下所有的语言,然后用Linq过滤掉它们,这肯定不太理想。我可以在一个循环中获得每个产品的语言代码,但这需要多次SQL往返,这也是我不想要的。
感谢任何帮助!
哦,如果有人想提起“Any()”,我忘了提及。这在这种情况下不起作用,因为它将过滤器应用于影响我的根结果集的ProductDescription。我不希望更少的结果,因为我只是想防止不需要的语言被填充。 – omatase 2010-07-26 01:30:00