linq - 动态 LINQ : Comparing Nested Data With Parent Property

标签 linq c#-4.0 lambda expression dynamic-linq

我有一个具有以下结构的类:

 public class BestWayContext
{
    public Preference Preference { get; set; }
    public DateTime DueDate { get; set; }
    public List<ServiceRate> ServiceRate { get; set; }
}

public class ServiceRate
{
    public int Id { get; set; }
    public string Carrier { get; set; }
    public string Service { get; set; }
    public decimal Rate { get; set; }
    public DateTime DeliveryDate { get; set; }
}

我有动态 linq 表达式字符串

“Preference != null && ServiceRate.Any(Carrier == Preference.Carrier)”

我想在 Dynamic LINQ 中按如下方式转换上述字符串:

  var expression = System.Linq.Dynamic.DynamicExpression.ParseLambda<BestWayContext, bool>(condition, null).Compile();

但它显示以下错误:

enter image description here

请指正我做错了什么?

最佳答案

看起来你想做这样的事情:

var bwc = new BestWayContext
{
    Preference = new Preference { Carrier = "test" },
    DueDate = DateTime.Now,
    ServiceRate = new List<ServiceRate>
    {
        new ServiceRate
        {
            Carrier = "test",
            DeliveryDate = DateTime.Now,
            Id = 2,
            Rate = 100,
            Service = "testService"
        }
    }
};

string condition = "Preference != null && ServiceRate.Any(Carrier == @0)";
var expression = System.Linq.Dynamic.DynamicExpression.ParseLambda<BestWayContext, bool>(condition, bwc.Preference.Carrier).Compile();
bool res = expression(bwc); // true
bwc.ServiceRate.First().Carrier = "test1"; // just for testing this -> there is only one so I've used first
res = expression(bwc); // false

关于linq - 动态 LINQ : Comparing Nested Data With Parent Property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729395/

相关文章:

c# - LinqToExcel 语法

dynamic - C# 中的猴子修补

c#-4.0 - 如何使用 C# 中的本地数据表获取 datagridview 中的月份数据

c# - Entity Framework Core SaveChanges 不更新记录

LINQ Join/Union 两个优先于第二个优先于第一个的对象列表

entity-framework - 无法将类型为 'System.Linq.Expressions.FieldExpression' 的对象转换为类型“System.Linq.Expressions.ParameterExpression

c# - Linq - 高级 .OrderBy

python - pyspark使用lambda内的正则表达式分割字符串

Scala单方法接口(interface)实现

Python lambda 优化