Показать записи в Entity Framework, которые принимают список строк в качестве аргумента - PullRequest
0 голосов
/ 26 сентября 2018

Я создал общий репозиторий, который будет извлекать данные из базы данных независимо от сущности.

В одном из методов я хочу получить данные, для которых я передаю List<string> значения, чтобы проверить, присутствует ли они в одном столбце.Мой код работает нормально, если я передаю одно значение.

Любая идея о том, как передать List<string> вместо INSTITUTIONID?

Вызов:

List<REQUESTDASHBOARD> listDashboard = new List<REQUESTDASHBOARD>();
listDashboard = dashboardSericeManager.GetList(
                d => d.INSTITUTIONID != null &&
                d.INSTITUTIONID.Contains("4cb6d23635"), null).ToList();

Реализация:

public IEnumerable<T> GetList(Expression<Func<T, bool>> predicate, params string[] navigationProperties)
{
    IEnumerable<T> list;

    var query = DbSet.AsQueryable();

    if (navigationProperties != null && navigationProperties.Length > 0)
    {
        foreach (string navigationProperty in navigationProperties)
        {
            query = query.Include(navigationProperty);
        }
    }

    list = query.Where(predicate).ToList<T>();

    return list;
}

1 Ответ

0 голосов
/ 26 сентября 2018

Предполагается, что вы определяете коллекцию List<string> следующим образом:

var institutionList = new List<string>();

// add data into list
institutionList.Add("institutionID_1");
institutionList.Add("institutionID_2"); // etc

и INSTITUTIONID - это строковое свойство внутри класса модели данных, тогда вы можете использовать расширение Any() & Contains()методы вместе, чтобы выяснить, INSTITUTIONID который доступен внутри списка выше, аналогично WHERE ... IN ... запросу в SQL:

List<REQUESTDASHBOARD> listDashboard = new List<REQUESTDASHBOARD>();

listDashboard = dashboardSericeManager.GetList(d => d.INSTITUTIONID != null 
                && institutionList.Any(x => d.INSTITUTIONID.Contains(x)), null).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...