c# – 如何使用linq动态过滤子集合
作者:互联网
我正在尝试过滤用户请求的结果.
例如,您有订单和订单详细信息,产品是子集合.
当用户想要按产品过滤我因为没有属性或字段’ICollection1’中存在“产品”而收到错误
我正在写这样的查询.
var orders = _uow.Repository<ORDERS>()
.Query()
.Where("PRODUCTS.HEADING.ToLower().Contains(\"foo\")")
.Include("ORDER_DETAILS")
.Include("ORDER_DETAILS.PRODUCTS")
.ToList();
所以不可能像这样过滤子集合吗?或者任何方式过滤?
谢谢.
解决方法:
从命名类/属性的方式来看,很难猜出哪一个是单个对象,哪一个是集合属性.
如果ORDERS类属性ORDER_DETAILS是ORDER_DETAILS类的集合,并且ORDER_DETAILS类属性PRODUCTS是具有字符串属性HEADINGS的PRODUCTS类的单个对象,则以下应该执行以下操作:
.Where("ORDER_DETAILS.Any(PRODUCTS.HEADING.ToLower().Contains(\"foo\"))")
它与跳过lambda参数的静态查询基本相同
.Where(o => o.ORDER_DETAILS.Any(d => d.PRODUCTS.HEADING.ToLower().Contains("foo")))
标签:c,linq,dynamic-linq 来源: https://codeday.me/bug/20190628/1310913.html