【问题标题】:how to applied < operator between string parameters in linq c#如何在linq c#中的字符串参数之间应用<运算符
【发布时间】:2020-01-16 07:02:09
【问题描述】:

我有一个 LINQ c#,其中我在 where 子句中有以下条件,我必须与字段进行比较,一个是字符串,另一个是 Int,但 &lt; 运算符在这些之间不适用条件

(注:我只是想应用'

    if (!string.IsNullOrEmpty(SearchExpression))
      _allData = _allData.Where(a => (a.VM_VERIFIED) < (a.VT_FINALAPP_LVL));

    _allData = _allData.AsQueryable().where(SearchExpression, objList);

    ds.Tables.Add(Utilities.LinqToDataTable(_allData, "GL_CHEQUES"));

   _Envelope.SetMaster(ds);

【问题讨论】:

  • 字符串何时小于小数?
  • "Hello" 是小于还是大于 2.45?你是根据什么规则来确定的?
  • 两个字段都有数字数据
  • 通过改变数据类型它没有提供数据,另一方面,在 oracle 上的查询有数据
  • KANWAL "两个字段都有数字数据" - 但"2.45" 不是数字,而是字符串。您知道它是数字的字符串表示形式,但编译器无法做出该决定(特别是因为它在运行时才拥有数据)。老实说,听起来您的数据库字段类型是错误的。

标签: c# linq operator-keyword


【解决方案1】:

您可以将字符串解析为十进制:

_allData = _allData.Where(a => Convert.ToDecimal((a.VM_VERIFIED)) < (a.VT_FINALAPP_LVL));

不过,我认为这不是一个好习惯。

【讨论】:

  • 是的,我试过了,但是这种转换在我的 linq 中没有给出任何数据
  • 希望十进制值的字符串表示遵循与当前线程相同的文化规则。例如,某些文化(例如“de-DE”)使用逗号而不是句点作为小数分隔符。所以2.45 将由字符串"2,45" 表示。 -- 最好明确指定预期的文化。
  • 确实,科拉克。 Kanwal 会得到一个 FormatException。最好的解决方案是在数据库级别更正类型。
  • 我希望我能:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多