c# - 实体框架 - 获取记录:逗号分隔的字符串(或列表) 包含在实体集合中
问题描述
给定实体
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public ICollection<Category> Categories { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public ICollection<Product> Products { get; set; }
}
我想查询 Products 表以检索具有以逗号分隔列表形式给出的任何类别的产品。
因此,例如,我想获得类别为“电子产品”和/或“厨房设备”的产品
如果它不是一个集合,我会这样做:例如
Products.Where(p => "Oven,Kettle".Contains(p.ProductName));
但这显然不起作用:
Products.Where(p => "Electronics,Kitchen Equipment".Contains(p.Categories.CategoryName));
也试过:
Products.Where(p => "Electronics,Kitchen Equipment".Any(x => p.Categories.Any(pcat => pcat.CategoryName == x.ToString()))).Take(100);
解决方案
您必须将 IEnumerable 传递给 Where 子句:
var names = "Oven,Kettle".Split(',');
var query = Products.Where(p => names.Contains(p.ProductName));
推荐阅读
- django - django 模型参数中的条件
- ios - 错误 ITMS-90046:不支持键“com.apple.developer.icloud-container-environment”的值“开发”
- c - OpenMP 折叠并行循环并减少
- java - 设计包含生成的 ID 的 Java 类的最佳方法
- python - 什么子进程可以替代 pip.main 安装?
- python - 对数据框进行双重分组
- reactjs - 组件安装多次,但只渲染一次
- python - 如何将拖放元素添加到前端?
- php - 按联接表的列对多对多关系进行排序
- python - 什么是“_ipython_canary_method_should_not_exist_”?