使用LINQ获取项目列表,其中项目包含来自另一个列表的项目的一部分

ehh*_*ehh 3 c# linq

有一个模型列表:

List<string> models = new List<string>
{
    "abcd1234",
    "xycd9999",
    "zzz999z",
    "ros7777"
};
Run Code Online (Sandbox Code Playgroud)

有过滤器清单:

List<string> filterer = new List<string>
    {
        "cd",
        "9999"
    };
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用LINQ来获取包含过滤器项目的所有模型作为其名称的一部分.

对于这个例子:

  1. "abcd1234"和"xycd9999"包含"cd"
  2. "xycd9999"包含"9999"

因此,LINQ操作将返回两个项目的列表:"abcd1234"和"xycd9999".

var filteredList = models
                   .Where(m => m.Contains("/*HERE WILL BE THE FILTERER ITEMS*/"))
                   .Distinct()
                   .ToList(); 
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

Zev*_*itz 7

var filteredList = models
    .Where(x => filterer.Any(y => x.Contains(y))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

Distinct这里没有任何用处,因为Where调用不会引入重复项(除非当然models有重复值,并且您希望删除这些重复项).