我有一个包含元素列表的主列表。我想根据两个过滤条件从列表中过滤掉一些记录。我想根据域和组织进行过滤,如下所示。没有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();
答案 0 :(得分:4)
类似的事情应该起作用:
mainLst.Where(c => domains.Split(',').Contains(c.domain) &&
orgs.Split(',').Contains(c.org)).ToList();
这将按','划分域和组织,得到2个可以在过滤器中使用的列表。
然后,LINQ查询针对mainLst中的每个项目检查域和组织是否包含在这些列表中,并根据需要应用两个过滤器。
答案 1 :(得分:0)
使用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;