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来做呢?

提前感谢!

c#比较string[]数组和对象的泛型列表

您可以确定重复的内容,然后删除它们:

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();