【发布时间】:2013-11-05 08:24:13
【问题描述】:
linq.. 有问题。
让我们看看代码
我有一个文章类:
public calss Article
{
public string Tag{get; set; }
}
我保存文章的每个标签,以, 逗号分隔。
例如:first,second,third
当我想获得一篇文章时,我想获得具有任何共同标签的文章。
我使用这个查询但是:
var relatedArticles =
_db.Articles.Where(a => a.Tag
.Split('،')
.Any(t => article.Tag
.Split('،')
.Any(ac => ac == t)));
我得到了这个例外:
LINQ to Entities 无法识别方法“System.String[] Split(Char[])' 方法
还有其他方法吗?
更新: 我不能将标签保留在不同的表格中,因为我必须让用户在插入文章时创建任意数量的标签。 像 50 并且在将文章保存到数据库时检查该标签是否存在将是开销。
【问题讨论】:
-
如果你可以有多个标签,为什么不将它们保存在列表、数组或任何其他类型的容器中,而不是使用字符串操作?
-
你能给我看一个带有查询的示例代码吗?
-
那不是好的桌子设计。您需要将表格规范化为第三种形式,因为这看起来像 n:m 参考。将文章保存在一个引用映射表的表中,在该表中引用arcticleId 和tagid,而不是一个带有主键tagid 的标签的表。比你只需要编辑例如标签表中的一个标签,如果它发生变化,它将在每个参考arcticle 更新。编辑:我刚刚认识到你不是在谈论表格,无论如何你标记为 sql-server。看看nvoigt的答案,和我提到的一样,但不是table design
标签: c# sql-server linq entity-framework tsql