繁体   English   中英

Linq-to-sql查询,其翻译是从逗号分隔的代码到描述的逗号分隔

[英]Linq-to-sql query with translation from comma-separated of code to comma-separated of description

我有以下表格:

  1. “程序”:

    代码:bigint,主键,自动递增

    标题:varchar(max),非空

  2. “工作清单”:

    代码: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM