实体框架查询用户trimstart

本文关键字:trimstart 用户 查询 框架 实体 | 更新日期: 2023-09-27 18:12:38

如何使用trimstart使实体框架理解要做什么?

这是我的查询:

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

我如何使这个查询工作没有AsEnumerable(有很多工人在公司8)?

实体框架查询用户trimstart

尝试使用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);

我有一个例子,简单地使用

.AsEnumerable()

让它工作

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

这是因为SQL中的trim函数只能修剪空白,所以EF支持TrimStart方法,但只能不带参数。

您的需求应该首先引起关于提高数据库中数据质量的讨论!您的数据质量不高,无法有效地支持这类查询。