如何在Dynamic Linq中编写String.Contains

Zal*_*lan 6 c# linq dynamic

我正在尝试编写动态linq查询,如:

var q = obj.Where("message.Contains('hello')");
Run Code Online (Sandbox Code Playgroud)

我知道它适用于

var q = obj.Where(o => o.message.Contains('hello'));
Run Code Online (Sandbox Code Playgroud)

但我正在寻找动态的linq解决方案

谢谢.

Zal*_*lan 12

现在找到我的答案.

var q = obj.Where("message.Contains(@0)", "hello");
Run Code Online (Sandbox Code Playgroud)


JYe*_*ton 1

我知道这不是您想要的,但只是作为一个需要考虑的点:

根据您期望执行的各种操作的数量,我将创建一个 switch 语句来处理这个问题。

例如,一些使用枚举的伪代码:

(如果需要的话,OperationType 是一个 Enum)

private object example(OperationType optype, Object obj, String match)
{
   var q;
   switch (optype)
        {
        case OperationType.Contains:
            q = obj.Where(o => o.message.Contains(match));
        break;
        case OperationType.EndsWith:
            q = obj.Where(o => o.message.EndsWith(match));
        break;
        case OperationType.StartsWith:
            q = obj.Where(o => o.message.StartsWith(match));
        break;
    }
    return q;
}
Run Code Online (Sandbox Code Playgroud)