相关疑难解决方法(0)

具有多个/未知标准的动态linq查询

我希望实现一个系统,用于"构建"条件,然后从数据库返回结果数据.目前,有一个存储过程可以动态生成SQL并执行它.这是我想要删除的特殊问题.

我的问题来自这样一个事实:我可以在我的标准中包含多个字段,并且对于每个字段,可能有一个或多个值,具有不同的潜在运算符.

例如,

from t in Contacts 
where t.Email == "email@domain.com" || t.Email.Contains ("mydomain")
where t.Field1 == "valuewewant"
where t.Field2 != "valuewedontwant"
select t
Run Code Online (Sandbox Code Playgroud)

字段,标准和运算符存储在数据库(和List<FieldCriteria>)中,并且可能是这样的(基于上面);

Email, Equals, "email@domain.com"
Email, Contains, "mydomain" Field1,
Equals, "valuewewant" Field2,
DoesNotEqual, "valuewedontwant"
Run Code Online (Sandbox Code Playgroud)

要么

new FieldCriteria
{
FieldName = "Email",
Operator = 1, 
Value = "email@mydomain.com"
}
Run Code Online (Sandbox Code Playgroud)

因此,使用我拥有的信息,我希望能够构建具有任意数量条件的查询.我之前看到过Dynamic Linq和PredicateBuilder的链接,但我无法将其视为我自己问题的解决方案.

任何建议,将不胜感激.

更新

继关于Dynamic Linq的建议之后,我提出了一个非常基本的解决方案,使用单个运算符,具有2个字段和多个条件.目前在LinqPad中编写的有点粗略,但结果正是我想要的;

enum Operator
{
    Equals = 1,
}

class Condition
{
    public string Field { get; set; }
    public Operator Operator { …
Run Code Online (Sandbox Code Playgroud)

c# linq dynamic

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

dynamic ×1

linq ×1