我正在尝试将前端查询构建器映射到后端 ORM(OrmLite)。
例如,前端可能会发送 3 个字符串值:SomeField, = foo.
如果我想在 ORM 中生成这个查询,我会这样做:
var q = db.From<MyEntity>()
.Where(x => x.SomeField == "foo")
所以我需要做的是想出一种方法来从字符串构建 where 谓词。
我可以看到Where预期的类型是:Expression<Func<MyEntity,bool>>
所以我想我需要类似的东西:
var q = db.From<MyEntity>()
.Where(GetQueryPart("SomeField", "=", "foo");
//....
public Expression<Func<T,bool>> GetQueryPart<T>(string field, string queryOperator, string value)
{
//...
}
但我不确定这是否是正确的方法或从哪里开始。我在这里查看了文档https://docs.microsoft.com/en-us/dotnet/api/system.linq.expressions.expression?view=net-5.0我不清楚如何构建表达。
有人可以帮我解决这个问题吗?