【发布时间】:2020-09-24 16:35:11
【问题描述】:
我首先在 System.Dynamic.Linq 中使用 EF6 代码。我试图弄清楚如何将字符串转换为十进制。基本上和这里要求的一样:Dynamic LINQ Cast issue
我的系统解析生成名称/值对的文件。这些作为 varchar 列存储在表中。这些值可以表示任何类型(字符串、整数、小数、日期时间等),因此我无法真正保存为实际数据类型,因此所有内容都存储为 varchar。
我在应用程序中有一个文本框,可让用户输入动态 linq 查询。例如,用户可能正在尝试这样做:
Name == "Test Value" && Value > 5.5
或
Name == "Other Value" && Value == "My String Value"
问题是我似乎无法在 Value 列上进行必要的转换。我目前主要对转换为十进制感兴趣,因为这是大多数数据。我尝试了一些我发现的建议:
- Convert.ToDecimal(Value):Linq to Entities 无法识别该方法
- Decimal.Parse(Value):Linq to Entities 无法识别该方法
- 尝试实现 DbFunction (Example)。将其转换为十进制而不是 int。 ParseDecimal(Value):不存在适用的方法。显然,它正在业务对象本身上寻找该方法。
似乎是一件简单而常见的事情。我错过了什么?
【问题讨论】:
标签: c# entity-framework-6 dynamic-linq