实体框架查询中的user trimstart

时间:2011-10-29 02:59:08

标签: c# .net linq entity-framework

我如何使用trimstart,以便实体框架能够理解该怎么做?

这是我的问题:

string number="123";
Workers.Where(x => x.CompanyId == 8).Where(x => x.Number.TrimStart('0') == number);

如何在没有AsEnumerable的情况下使这个查询工作(公司8中有很多工人)?

2 个答案:

答案 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方法,但只支持参数。

首先,您的要求应引发有关提高数据库数据质量的讨论!您的数据无法提供有效支持此类查询的质量。