使用动态 linq 过滤对象列表

用户3401335

我有两个这样的班级

public class Error{
   public string Code{get;set;}
   public string Description{get;set;}
}

public class Row{
   public List<Error> Errors {get;set;}
   ....
}

所以,对于每一行,可以存在更多的错误。是否可以使用动态 linq 选择具有错误代码(例如 Code1)的行?

因此,如果该行包含 Code1 和 Code2,我想选择该行。

如果在下面的示例中查询有一个行列表,我想要这样的查询

query.Where("Errors != null && Errors.Code.contains('Code1')")
伊万·斯托耶夫

是否可以使用动态 linq 选择具有错误代码(例如 Code1)的行?

按照我的理解,你有这样的事情

IQueryable<Row> query = ...;
string code = "Code1";

并且您需要与以下静态查询等效的动态 LINQ:

var result = query
   .Where(row => row.Errors != null && row.Errors.Any(error => error.Code == code));

由于在动态 LINQ 中,每个Enumerable扩展方法 lambda 都进入一个单独的“范围”,因此可以通过特殊it标识符或根本没有标识符来访问内部成员此外,它允许你传递参数和使用索引来引用他们的查询字符串里面@p0@p1

因此,上面等效的动态 LINQ 查询可能是这样的:

var result = query
    .Where("Errors != null && Errors.Any(Code == @0)", code);

如果不是您想要的完全匹配string.Contains,只需替换Code == @0Code.Contains(@p0).

当然,您可以将字符串文字值嵌入其中,但请记住,它需要用双引号 ( ")括起来

var result = query
    .Where("Errors != null && Errors.Any(Code == \"Code1\")");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在LINQ中使用反射动态过滤列表

来自分类Dev

LINQ过滤对象列表

来自分类Dev

使用Linq过滤列表

来自分类Dev

C#LINQ使用值列表按子列表过滤复杂对象列表

来自分类Dev

使用LINQ过滤通用列表,该LINQ使用PropertyName作为字符串文字-使用动态

来自分类Dev

使用Linq过滤Json对象

来自分类Dev

如何在使用linq维护对象的原始形式的同时过滤列表中的列表?

来自分类Dev

使用Linq进行动态过滤

来自分类Dev

使用Linq进行动态过滤

来自分类Dev

LINQ查询以使用多个检查按对象属性过滤列表

来自分类Dev

使用LINQ分页对象列表

来自分类Dev

动态LINQ过滤

来自分类Dev

根据成员对象列表过滤LINQ查询

来自分类Dev

C#对象列表过滤(Linq?)

来自分类Dev

如何使用LINQ C#过滤列表

来自分类Dev

如何使用LINQ C#过滤列表

来自分类Dev

使用linq查询从列表中进行过滤

来自分类Dev

使用LINQ根据字段过滤JSON对象

来自分类Dev

LINQ动态列表

来自分类Dev

使用动态布尔运算符过滤对象列表

来自分类Dev

基于对象属性列表的 Linq 过滤器列表

来自分类Dev

使用Linq获取列表中对象的索引

来自分类Dev

使用linq更新对象列表的逻辑

来自分类Dev

使用LINQ拒绝邮寄对象列表

来自分类Dev

使用LINQ更改列表中对象的属性

来自分类Dev

在LINQ中使用group by填充对象列表

来自分类Dev

使用linQ将对象列表分组为新的对象列表

来自分类Dev

如何在动态对象中使用linq Sum

来自分类Dev

如何在动态对象中使用linq Sum