我有两个表,标签(tagid,postid,标记名)和帖子(postid,name,...)
现在我想做一个查询,返回所有具有一般标签数量的帖子.喜欢:我想要所有帖子都有标签asp.net和jquery
正如我所说,要查找的标签数量是通用的
我怎么能这样做?
谢谢
更新17.11.2009:有一个问题:表之间的关系不存在,因为我的主键位于2个字段(用于版本控制)我怎么能没有关系?我正在使用Linq To Entities
此外,查询应该具有良好的性能,并且不应该产生数千个服务器请求.
你没有说你是在使用L2S,L2O,L2E还是什么.所以这是一个适用于所有这些的扩展方法.我正在猜测你的对象的布局,所以你可能需要纠正其中的一些.
public static IQueryable<Post> WhereHasAllTags(this IQueryable<Post> posts, IEnumerable<string> tags)
{
var q = posts;
foreach (var tag in tags)
{
q = q.Where(p => p.Tags.Any(t => t.Name == tag));
}
return q;
}
Run Code Online (Sandbox Code Playgroud)
现在使用它:
var filtered = Context.Posts.WhereHasAllTags(new [] { "asp.net", "jquery" } );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1182 次 |
最近记录: |