Возможно, я бы динамически создал лямбда-выражение.
Предложение Where принимает объект типа Expression>
Затем вы можете создать выражение, используя следующее.
Expression<Func<User,bool>> func = null;
Тогда
ParameterExpression xParam = Expression.Parameter(typeof(User), "u");
Затем вы должны создать выражение для u.id = "test", используя двоичное выражение.
BinaryExpression uidTest = Expression.Equal(Expression.Property(xParam, "id"),
Expression.Constant("test");
и затем присоединить его к выражению следующим образом:
func = Expression.Lambda<Func<User, bool>>(uidTest, xParam)
Фактически это строит лямбда-выражение u => u.id = "test"
Объект func может затем использоваться в .Where следующим образом:
.Где (FUNC)
Очевидно, что вы можете динамически построить это по любым критериям, которые вам нужны в любое время в вашем приложении.