[英]Linq-to-sql query with translation from comma-separated of code to comma-separated of description
我有以下表格:
“程序”:
代码:bigint,主键,自动递增
标题:varchar(max),非空
“工作清单”:
代码:bigint,主键,自动递增
标题:varchar(max),非空
过程:varchar(max),非空,过程代码的逗号分隔字符串
...
我正在使用Linq-to-SQL查询带有“过程”列的表“工作列表”,该表将转换为以逗号分隔的过程标题字符串。
例如,“工作列表”。“过程”的子查询:
procedures = string.Join(",", (
from pc in w.procedures.Split(',').Select(cs => long.Parse(cs)).ToList()
join ps in db.procedures.AsEnumerable() on pc equals ps.code
select ps.caption
).ToArray()),
但是,我面临“ Split()在SQL中不支持翻译”的异常。
请提出建议。 非常感谢!
您将无法像这样解决查询。 您需要将原始数据获取到c#,然后处理拆分。
这是因为在您当前的代码中,您正在要求sql server进行拆分,并且它没有实现。 因此错误...
以下内容将procList中的每个项目作为单独的sql参数传入,以便可以将其放入sql IN子句中。 如果没有太多,这应该可以正常工作。
var procList = w.procedures.Split(',').Select(cs => long.Parse(cs)).ToList();
var procedures = (from ps in db.procedures.AsEnumerable()
where procList.Contains(ps.Code)
select ps.Caption).ToArray()
在显示的查询中,您将必须首先使用linq查询从db获取记录,例如:
var abc = w.procedures.ToList();
要么
var abc = w.procedures.ToList().Select(cs => cs).Split(...);
现在在abc上,您可以使用任何字符串函数。.因为一旦执行ToList,它将从数据库中获取记录。
希望这可以帮助..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.