【发布时间】:2015-09-16 17:09:30
【问题描述】:
在我的数据库中有一个字段是由逗号分隔的 id 字符串。 (即“5,8,9”)用户将从创建选定 id 列表的多下拉菜单中进行选择。我想搜索用户生成的 id 列表匹配的数据库(全部和任意)。
我目前的尝试如下。
reports = reports.Where(r => r.ItemIds.Split(',').ToList().Intersect(ItemIdsList).Any());
然后……
reports = reports.Where(r => r.ItemIds.Split(',').ToList().Intersect(ItemIdsList).All());
【问题讨论】:
-
“在我的数据库中有一个字段是由逗号分隔的 id 字符串。(即
'5,8,9')”这很不幸。你生活在一个极其糟糕的设计选择的后果中。 -
我意识到设计很差。该应用程序来自一个不包含太多数据的快速而脏的数据转储。如果我需要清除记录并创建另一个表,我会的。但在我这样做之前,我只是好奇这是否可能在 linq 表达式中。谢谢!
-
如果这些表中的数据很少,您可以在查询中将
report替换为report.AsEnumerable(),它们应该可以工作。 -
您要么必须在VS中获取所有数据和过滤器,要么在数据库中编写一个函数来执行拆分和搜索。请参阅以下网页:sqlservercentral.com/blogs/querying-microsoft-sql-server/2013/…
-
我将查询改写如下reports = reports.AsEnumerable().Where(r => r.ItemIds.Split(',').ToList().Intersect(ItemIdsList).All() );我得到了一个 NullReferenceException