如何从List <RegistryPathData>中排除项目

时间:2019-06-20 10:52:25

标签: c#

我有一个字符串数组和一个列表,数据如下所示,

get()

现在,我想从onSnapshot中排除与字符串数组(prod1和prod2)不匹配的项目。需要排除2以下的情况,怎么做?

string[] str = new string[2] { "Prod1", "Prod2" };
        List<RegistryPathData> data = new List<RegistryPathData>
        {
            new RegistryPathData{AppName="test1", RegPath="Prod1|Version"},
            new RegistryPathData{AppName="test2", RegPath="Prod2|Version"},
            new RegistryPathData{AppName="test3", RegPath="Prod3|Version"},
            new RegistryPathData{AppName="test4", RegPath="Prod4|Version"},
            new RegistryPathData{AppName="test5", RegPath="Prod5|Version"},
        };

3 个答案:

答案 0 :(得分:0)

像这样使用List.RemoveAll()函数。

data.RemoveAll(d => str.Contains(d.RegPath.Split('|')[0]));

答案 1 :(得分:0)

您可以使用LINQ page-break { page-break-before: always; } 方法来基于谓词过滤值序列。

.Where()

这意味着过滤掉列表中的项目,其中data.Where(d => !str.Contains(d.RegPath.Split('|')[0])); 数组中不包含直到第一个管道字符的字符串。

答案 2 :(得分:0)

使用LINQ中的Where方法,然后检查str数组中的任何字符串是否与当前对象的RegPath匹配。像这样:

List<RegistryPathData> dataOnlyProd1And2 = data
    .Where(rpd => str.Any(s => rpd.RegPath.StartsWith(s)))
    .ToList();