c#比较string[]数组和对象的泛型列表
本文关键字:对象 泛型 列表 数组 比较 string | 更新日期: 2023-09-27 18:13:04
如何将字符串[]数组中的项目与包含使用LINQ的对象的通用列表进行比较?
这个泛型列表包含名为picInfo的对象。Picinfo类看起来像这样:
[ProtoContract]
public class PicInfo
{
[ProtoMember(1)]
public string fileName { get; set; }
[ProtoMember(2)]
public string completeFileName { get; set; }
[ProtoMember(3)]
public string filePath { get; set; }
[ProtoMember(4)]
public byte[] hashValue { get; set; }
public PicInfo() { }
}
字符串[]数组包含图片的文件路径。我试图检查通用列表是否已经包含此特定图片的路径。
图片的通用列表如下所示:
List<PicInfo> pi = new List<PicInfo>();
如果泛型列表已经有图片,我想从字符串[]数组中删除项目。
i可以使用foreach循环来实现这一点,并逐个比较条目。但是我怎么用linq来做呢?
提前感谢!
您可以确定重复的内容,然后删除它们:
var duplicates = pi.Where(p => picArray.Contains(p.filePath);
foreach(string fileName in duplicates)
{
//do something
}
使用Except()
创建一个新的数组是一种更清晰、更易读的方法,尽管这对于创建数组来说会有更多的开销:
picArray = picArray.Except(pi.Select(p=> p.filePath)).ToArray();