如何创建具有未知字段的 lambda 表达式?

How do I create a lambda expression with unknown fields?

我想动态构建 lambda 表达式,以便我可以构建具有未知数量字段的查询...我该如何实现?

我正在遍历一个对象,该对象包含添加到每个字段的 Where 子句中的所有字段和值...

searcher = searcher.Where(f => f.fieldName.Contains(fieldValue));

即伪代码:

foreach(var field in fields){
    searcher = searcher.Where(f => field.name.Contains(field.value));
}

如果我生活在石器时代,我会这样伪编码:

var first = true;
string query = " SELECT * FROM TABLE WHERE ";
foreach(var field in fields){
    if(first){
        query += field.name + " LIKE '%" + field.value + "%' ";
    }else{
        query += " AND " + field.name + " LIKE '%" + field.value + "%' ";
    }

    first = false;
}

请告诉我石器时代并不比现在的科技更强大! ;-)

希望对您有所帮助。

searcher = fields.Aggregate(searcher, (current, field) => current.Where(f => f.Name.Contains(f.Value)));