c# - 如何使用 C# 中的 linq 检查存储在具有给定值的数据库列中的逗号分隔值

标签 c# sql-server asp.net-mvc entity-framework linq

我的 sql server 数据库中有一个名为 product 和 category 的表。 Product 表包含用于存储映射类别的列 category_id。一个产品可以映射到任意数量的类别,例如。category_id(1,25,44,11,21),映射 ID 将存储为逗号分隔的字符串。

现在我想使用 linq 从产品表中检索产品,其中产品包含从下拉菜单中选择的类别。

例如,我想检索产品 where category id =1。我的 linq 查询是

var prodlst = (from p in db.Products
           where (p.PCategory_Id.EndsWith(""+categoryid+"")||
           p.PCategory_Id.Contains("," + categoryid + ",") ||
           p.PCategory_Id.Contains("" + categoryid + ",") ||
           p.PCategory_Id.Contains("," + categoryid + ""))
           select new ProductBO
           {
             Id = p.Id,
             Product_Name = p.Name,
             Price = p.Price
    }).ToList();

它检索类别 id = 1 或 11 或 21 的所有值,但我只想检索类别 id 恰好为 1 的值

最佳答案

我不确定 EntityFramework 是否可以翻译这个。如果它不尝试使其可枚举。

db.Products.Where(t=> PCategory_Id.Split(',').Select(int.Parse).Contains(categoryid));

db.Products.AsEnumerable().Where(t=> PCategory_Id.Split(',').Select(int.Parse).Contains(categoryid));

关于c# - 如何使用 C# 中的 linq 检查存储在具有给定值的数据库列中的逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775306/

相关文章:

c# - HttpApplicationState 在 MVC Controller 中不可用

c# - Random.Next 会不会不再是随机的?

c# - 构建字符串时如何保持上一行的缩进

sql-server - 为什么我的日志文件需要 sql server 中物理表大小的 3 倍

asp.net-mvc - 在 MVC 中从派生页面传递状态的惯用方式?

c# - 如何在 C# 中连接到 mysql 数据库并模拟 SELECT、UPDATE 和 INSERT 函数

sql-server - 未返回输出参数

sql-server - [unixODBC][FreeTDS][SQL Server]无法连接到数据源

asp.net-mvc - 如何在每个页面的第一次点击中提高 ASP.Net MVC3 性能?

javascript - Wijmo 网格。获取具有匹配 ID 的行的行号