当前位置: 首页 > 编程语言 > C#

如何使用linq动态过滤子集合分享

时间:2023-04-11 00:52:18 C#

如何使用linq动态过滤子集合我正在尝试过滤用户请求的结果。例如,您有订单和订单详细信息,而产品是一个子集合。当用户想要按产品过滤时,我收到错误消息,因为类型“ICollection”中不存在属性或字段“PRODUCTS”1类型“ICollection”中不存在属性或字段“PRODUCTS”我正在编写这样的查询。varorders=_uow.Repository().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")))问题是ORDER_DETAILS是一个包含每个订单详细信息的产品列表的列表?这就是您收到错误消息的原因。要从ORDER_DETAILS获取产品,您需要对其进行迭代并从每个元素获取产品。您可以尝试:varorders=_uow.Repository().Query().Where("PRODUCTS.HEADING.ToLower().Contains("foo")").Include(x=>x.ORDER_DETAILS.Select(y=>y.产品));现在看起来你遇到了这个问题中描述的问题。希望它现在运作良好。以上就是C#学习教程:如何使用linq动态过滤子集合共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: