c# - 还有另一种方法可以执行此查询吗? (包含 linq-to-sql 查询中的拆分字符串)

标签 c# linq linq-to-sql

我有一个包含一些产品的表的 sql 数据库,每个产品都可以在一台或多台机器上生产。现在我想搜索在某台机器上生产的所有产品。

表格是这样的:

产品引用(nvarchar) |机器(nvarchar)

P1 | 1,2,3

P2 | 2

P3 | 2

P4 | 2,3

我尝试使用以下查询,但我发现 linq-to-sql 不支持拆分字符串。

    public List<string> GetReferenceForMach(string machName)
    {
        IEnumerable<string> producttmp = from product in productInfo
                                         let machines = product.Machines.Split(',')
                                         from machine in machines
                                         where machine == machName
                                         select product.Reference;

        return producttmp.ToList(); 
    }

还有其他编程方式吗?

最佳答案

当生活给你数据库中的字符串时,正常的 react 是使用字符串解析:

string machName;

string midName = ',' + machName + ',';

from product in productInfo
where (',' + product.Machines + ',').Contains(midName)
select product.Reference

没有索引来帮助这个查询 - 所以准备进行表扫描。

关于c# - 还有另一种方法可以执行此查询吗? (包含 linq-to-sql 查询中的拆分字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597543/

相关文章:

c# - 如何使用 linq 将图像保存到 sql-server 中?

c# - 如何更新/修改 LINQ 实体集?

c# - Linq to SQL 插入商标 "™"符号

c# - 如何解码 URL 中的 "\u0026"?

c# - 如何通过反射在一次调用中同时获取字段和属性?

c# - 为什么 mvccontrib 的 AssertViewRendered().ForView ("Edit") 由于 View 名称是完整的 cshtml 路径而失败?

linq - 将 SQL 子选择转换为 LINQ

c# - 无法正确组合查询

c# - ReferentialConstraint 中的依赖属性映射到存储生成的列

c# - 为什么我可以将枚举与 null 进行比较?