【发布时间】:2017-05-23 11:49:24
【问题描述】:
这里的字符串 productname2="xyz" 但实际上在数据库中 PRODUCTNAME 是“XYZ”,当我比较它时返回 false,所以我无法获得产品代码,在这里我不仅想比较,还想从这个状态中获得一些值。
orderdetail.PRODUCTCODE = context.PRODUCTs.Where(pro => pro.PRODUCTNAME==productname2)
.Select(code => code.PRODUCTCODE).DefaultIfEmpty().Max();
任何帮助将不胜感激
【问题讨论】:
-
在比较的两边都使用 ToLowerInvariant() 怎么样?
-
@wkl
ToLower存在国际化问题 - 最好使用string.Equals(...)的相关覆盖 -
我不认为这在查询中得到了最好的解决。鉴于这是来自数据库,看起来您可能会更好地受益于在数据库中的列上设置正确的(不区分大小写)排序规则。通过转换大小写,您放弃了列上可能拥有的任何索引的好处。
-
@RowlandShaw 你说得对,我编辑了我的评论以使用 ToLowerInvariant。我认为应该这样做。
-
@wkl IIRC,当它被翻译成 SQL 时会爆炸。
标签: c# oracle entity-framework linq