我如何使用trimstart,以便实体框架能够理解该怎么做?
这是我的问题:
string number="123";
Workers.Where(x => x.CompanyId == 8).Where(x => x.Number.TrimStart('0') == number);
如何在没有AsEnumerable的情况下使这个查询工作(公司8中有很多工人)?
答案 0 :(得分:12)
尝试使用SqlFunctions.PatIndex
。我使用值"000123"
,"000One"
,"abcde"
测试了类似下面的查询,并且正确选择了值为"123"
,"One"
的行,以及"abcde"
。
Workers.Where(x => x.CompanyId == 8 &&
x.Number.Substring(SqlFunctions.PatIndex("%[^0]%", x.Number).Value - 1) == number);
答案 1 :(得分:0)
这是因为SQL中的trim函数只能修剪空格,因此EF支持TrimStart
方法,但只支持参数。
首先,您的要求应引发有关提高数据库数据质量的讨论!您的数据无法提供有效支持此类查询的质量。