【发布时间】:2009-08-19 21:41:48
【问题描述】:
我有以下数据库(简体)
图片 - ImageTag - 标签
ImageTag 是一个连接表,用于形成多对多关系。
我想创建一个方法来返回所有包含 x 标签的图像,这就是我开始的:
public static IQueryable<Image> WithTags(this IQueryable<Image> qry, IEnumerable<Tag> tags)
{
return from i in qry //uhhhh
}
但是如你所见,我有点难过!
我知道如何使用普通 SQL 来完成,但我对 LINQ 语法有点困惑,有什么想法吗?
--
编辑
它应该匹配具有任何标签的任何图像
所以例如,如果在“qry”变量中,有一个带有标签1,2,3的图像......如果你传入标签变量1和2,它将匹配
类似,如果你通过了 1,2,4 - 即使它没有 4,它也应该仍然匹配
如果你通过了 3 和 4,它也会匹配
编辑 2
如果它可以按照匹配的数量对返回的图像进行排序,那就太棒了。因此,例如,如果您传入 3 个标签并且一张图片包含所有 3 个标签,那么它会比只匹配 1 个标签的图片更高
【问题讨论】:
-
你的意思是有所有的x标签,还是其中任何一个?
-
任何一个,都会澄清这个问题......
-
如果您通过标签 3 和 4,标签为 1、2、3 的图像是否匹配?
-
是的,它会匹配,基本上只是在寻找任何类型的匹配。如果您可以按比赛数量排序,您将获得金星:p
标签: c# linq-to-sql