我在我的
SQLite
项目中使用 C#
创建了一个数据库。在函数中,我喜欢使用 Linq
过滤表中的记录。因此,我使用 this code 作为 And 函数,编写了
Expression<Func<Word, bool>> fnz = w => w.CreatedAt >= dt && w.CreatedAt < endDate;
if (!string.IsNullOrEmpty(username))
{
Expression<Func<Word, bool>> fnz2 = w => w.CreatedBy.Trim() == username;
fnz = fnz.And(fnz2);
}
如果我使用一些
string
函数,例如 Trim()
,我会收到此错误
函数trim()的参数数量错误
我看到了与此错误相关的其他帖子,但没有看到
Linq
。
不确定这是否有帮助,但在带有 MSSQL 的 EntityFramework 中,LINQ/lambda 表达式在往返之前针对数据库运行,这意味着它们(尝试)被转换为 SQL 语法。我不知道您的代码中是否已经发生了数据库往返,但如果没有,我怀疑您的代码尝试将
string.Trim()
转换为 SQLite 语法,该语法似乎存在,但具有不同的重载。
此外,
w.CreatedBy.Trim()
真的有必要吗?您真的希望数据库中的值有尾随空格吗?
如果是这样,从上面保护我的观点,您将必须更改代码以首先进行数据库往返(例如通过调用
.ToList()
),然后使用您的表达式进行过滤。请记住,这可能会导致大量数据从数据库传递到内存中。