我有一个字符串数组和一个列表,数据如下所示,
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"},
};
答案 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();