首页 > 解决方案 > 过滤多个列表值

问题描述

我有一个包含元素列表的主列表。我想根据两个过滤条件从列表中过滤掉一些记录。我想根据域和组织进行过滤,如下所示。没有 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();     

标签: c#listlinq

解决方案


像这样的东西应该工作:

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

这将通过 ', ' 拆分域和组织,得到 2 个您可以在过滤器中使用的列表。

然后,LINQ 查询会针对 mainLst 中的每个项目检查域组织是否包含在这些列表中,并根据需要应用这两个过滤器。


推荐阅读