Добавить метод Linq.Contains к функции выражения - PullRequest
3 голосов
/ 03 мая 2019

У меня проблема с этой желтой частью изображения. Я хочу, если SelectedGroup не пусто. В дополнение к терминам, добавленным к этому выражению, добавьте еще одно условие. Вот и все. c => SelectedGroup.Contains (c.CourseGroup.Id) Выберите все те SelectedGroups, у которых есть свой идентификатор в этом диапазоне. Этот quray, который я написал, не работал. Ошибка, которая дает то, что он не может быть переведен в SQL-запрос. Я понятия не имею, чтобы решить эту проблему. Помогите мне, пожалуйста

введите описание изображения здесь

И для более подробной информации о моем коде. Это мой код хранилища введите описание ссылки здесь

введите описание ссылки здесь

1 Ответ

1 голос
/ 03 мая 2019

Прокатитесь на combine Func, это вам не поможет. Вы не должны компилировать свое выражение, если вы действительно хотите вернуть запрос.

Что вы могли бы сделать:

Expression<Func<Course, bool>> expression = c => (string.IsNullOrEmpty(Title) || EF.Functions.Like(c.CourseTitle, $"%{Title}%")
        && c.IsDeleted == IsDeleted);

        switch (statusType)
        {
            case PriceStatusType.All:
                break;
            case PriceStatusType.Free:
                queryable = queryable.Where(expression).Where(c => c.CoursePrice < 1000);
                break;
            case PriceStatusType.Cash:
                queryable = queryable.Where(expression).Where(c => c.CoursePrice <= MaxPrice && c.CoursePrice >= MinPrice);
                break;
        }
        if (SelectedGroup != null && SelectedGroup.Any())
        {
            Expression<Func<Course, bool>> e = c => SelectedGroup.Contains(c.CourseGroup.Id);
            queryable = queryable.Where(expression);
            queryable = queryable.Where(c => SelectedGroup.Contains(c.CourseGroup.Id));


        }

        return queryable;

Кроме того, я удалил «Включить», поскольку он бесполезен и должен использоваться вызывающим абонентом, если это необходимо.

...