Как преобразовать модель представления в Expression>?C#

Место общения программистов C#
Ответить
Anonymous
 Как преобразовать модель представления в Expression>?

Сообщение Anonymous »

Отталкиваясь от очень похожего вопроса...

Мне нужно сгенерировать Expression из ViewModel, чтобы передать его в качестве предиката поиска для IQueryable.Where. Мне нужно иметь возможность включать/исключать параметры запроса на основе того, что предоставляет пользователь. Пример:

Код: Выделить всё

public class StoresFilter
{
public int[] Ids { get; set; }

[StringLength(150)]
public string Name { get; set; }

[StringLength(5)]
public string Abbreviation { get; set; }

[Display(Name = "Show all")]
public bool ShowAll { get; set; } = true;

public Expression ToExpression()
{
List expressions = new List();

if (Ids != null && Ids.Length > 0)
{
expressions.Add(x => Ids.Contains(x.Id));
}
if (Name.HasValue())
{
expressions.Add(x => x.Name.Contains(Name));
}
if (Abbreviation.HasValue())
{
expressions.Add(x => x.Abbreviation.Contains(Abbreviation));
}
if (!ShowAll)
{
expressions.Add(x => x.Enabled == true);
}
if (expressions.Count == 0)
{
return x => true;
}

// how to combine list of expressions into composite expression???
return compositeExpression;
}
}
Есть ли простой способ создать составное выражение из списка выражений? Или мне нужно пройти процесс создания выражения вручную с помощью ParameterExpression, Expression.AndAlso, ExpressionVisitor и т. д.?

Подробнее здесь: https://stackoverflow.com/questions/503 ... funct-bool
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»