如何将lambda中的字符串转换为十进制?

时间:2011-08-13 06:45:56

标签: string linq lambda decimal

我有代码

    myEntities db = new myEntities();
    var query = from s in db.mytable select s;
    if (!String.IsNullOrEmpty(str))
    {
      query = query.Where(p => p.total == str);
    }

这里,“total”的类型是包含数字和字符的字符串,例如“14x56xz”。我想从“total”字符串中获取数字部分(例如1456)并将其转换为十进制数,有时需要将其转换为负数,使代码看起来像这样:

    query = query.Where(10 <= p => p.total <= 1000);

我编写了一个类来处理它,但我不知道如何在Linq中调用这个处理方法。

1 个答案:

答案 0 :(得分:1)

只需在lambda中解析它。例如:

query = query.Where(10 <= p => decimal.Parse(p.total) <= 1000m);

当然,如果有任何方法可以改进您的数据模型,以便逻辑数字值存储作为数字,那就更好了......

编辑:我认为你很难在LINQ to Entities中将“14x56xz”转换为1456。您可以在数据库端执行某些操作以使用转换和正则表达式等公开计算列,但我不确定您是否能够以适当转换的方式在LINQ中表达它。 / p>