Фильтровать несколько значений списка - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть один основной список, содержащий список элементов.Я хочу отфильтровать некоторые записи из списка на основе двух условий фильтрации.Я хочу фильтровать по домену и организации, как показано ниже. Без цикла foreach можно ли выполнить это сравнение на mainLst?

domains = "ABC/XYZ,RTG,YUT,WED"; //Comma seperated values
orgs = "FA,TR,WE,QW,ER"; // Comma seperated values
MainLst contains single domain and org for each record.

var mainLst = MasterData();
var filterDomain = lst.Where(c => c.domain == domains && c.orgs == orgs).ToList();     

Ответы [ 2 ]

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

Примерно так должно работать:

mainLst.Where(c => domains.Split(',').Contains(c.domain) && 
                   orgs.Split(',').Contains(c.org)).ToList(); 

Это разделит домены и организации на ',' получив 2 списка, которые вы можете использовать в фильтрах.

Запрос LINQ затем проверяет, для каждого элемента в mainLst, что домен и org содержится в этих списках, применяя оба фильтра по мере необходимости.

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

Разделите список с помощью метода Split и используйте LINQ для извлечения совпадающих записей.

        var domains = "ABC/XYZ,RTG,YUT,WED"; //Comma seperated values
        var orgs = "FA,TR,WE,QW,ER";

        var domainArray = domains.Split(',');
        var orgsArray = orgs.Split(',');

        var mainLst = new List<MasterData>();
        var filterDomain = from md in mainLst
                           join dm in domainArray on md.Domain equals dm
                           join or in orgsArray on md.Organization equals or
                           select md;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...