C#List <string>包含来自另一个List <string>的部分匹配

dav*_*ids 0 .net c# list

我有这些清单:

var list1 = new List<string>
{
    "BOM_Add",
    "BOM_Edit",
    "BOM_Delete",
    "Paper_Add",
    "Paper_Edit",
    "Paper_Delete"
};

var list2 = new List<string> {"BOM", "Paper_Add"};
Run Code Online (Sandbox Code Playgroud)

我想基于部分匹配创建常见项目的第三个列表.因此,第三个列表应包含:

"BOM_Add",
"BOM_Edit",
"BOM_Delete",
"Paper_Add"
Run Code Online (Sandbox Code Playgroud)

因为第二个列表包含"BOM".

如果第二个列表包含"_Edit",那么我希望第三个列表具有

"BOM_Edit",
"Paper_Edit"
Run Code Online (Sandbox Code Playgroud)

.Intersect()如果我在第二个列表中拼出每个项目(例如"BOM_Add"),我知道如何做到这一点,但我需要它比这更灵活.

这可以在不重复第一个列表中的每个项目的情况下完成吗?这些列表可能会很长,如果可以,我宁愿避免这样做.

Hab*_*bib 6

您可以使用LINQ

var result = list1.Where(r => list2.Any(t => r.Contains(t)))
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

输出:

foreach (var item in result)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

BOM_Add
BOM_Edit
BOM_Delete
Paper_Add
Run Code Online (Sandbox Code Playgroud)

这可以在不重复第一个列表中的每个项目的情况下完成吗?

您必须通过循环或使用LINQ (内部迭代)进行迭代