【问题标题】:Linq to entities Expression parse string to intLinq 到实体表达式将字符串解析为 int
【发布时间】:2017-07-18 03:41:17
【问题描述】:

我对在 linq to entity 表达式中使用的这段代码有疑问:

int _val = Convert.ToInt32(value);
Expression term1 = Expression.Equal(Expression.Property(Expression.PropertyOrField(bookProperty, "type"), "key"), Expression.Constant("taille", typeof(string)));
Expression temp1 = Expression.Property(bookProperty, "value");
MethodInfo Parse = typeof(int).GetMethod("Parse", new[] { typeof(string) });
Expression term2 = Expression.GreaterThanOrEqual(Expression.Call(Parse, temp1), Expression.Constant(_val, typeof(int)));
conditions = Expression.And(term1, term2);

bookproperty 是一个为其他对象(书)设置属性的对象 该属性的值存储在数据库的“值”字段中。 因为 value 可以存储布尔值、整数、双精度值、文本等。它被设置为字符串。

在这种特殊情况下,我需要将字符串解析为 int。

我认为它不起作用,因为某些值字段存储不可解析的值。

我得到了这个错误:

FormatException: 输入字符串的格式不正确。

但我不知道如何处理。

感谢您的帮助。

【问题讨论】:

    标签: c# entity-framework linq expression-trees


    【解决方案1】:

    最后我找到了解决方案,这只是操作员的问题:

    表达式的目标是获得这样的 linq 查询:

    bookProperty.Where(b=> b.type== "taille && b.value == 1)
    

    为此,我使用了Expression.And() 运算符。 那是错误:&&对应吨AndAlso运营商

    【讨论】:

      【解决方案2】:

      我认为如果值不是 int 那么你应该停止操作。您可以使用 int.TryParse 方法

              if (!int.TryParse(bookProperty, out bookProperty))
              {
                  // break the operation. You can also have error handling code here.
                  return;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 2011-12-26
        • 2015-06-20
        • 2021-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        相关资源
        最近更新 更多