0
让说,我有以下模式跨越多对多关系的LinqToSql查询?
Content(Id, ....)
TagContent(TagId, ContentId)
Tag(TagId, Name)
假设我想选择一个有名字的“测试”标签的所有内容记录。
在SQL我会写:
select Content.Id
from Content
join TagContent as TC on (TC.ContentId = Content.Id)
Join Tag on (TC.TagId = Tag.Id)
where Tag.Name = 'Test'
你可以建议如何,如果您有只写表Linq中类似的查询? (我想创建一个扩展方法Content.ByTag(“标签”) - > IQueryable的)
我只设法创建使用SQL语句exists
代替join
查询。 这意味着查询效率极低。
我目前低效的解决方案如下所示:
DataContext.Contents.Where(c => c.TagContents.Any(tc => tc.Tag.Name == "Test"))
注: ,因为我想使扩展方法上DataContext.Contents我将无法访问其他表是的DataContext .Tag和DataContext.ContentTag。
在我的分机menthod我没有访问TagContents和标签 – 2009-10-30 15:57:13
啊我看到你的问题。 – 2009-10-30 16:08:18