gpt4 book ai didi

C# 将字符串 [] 数组与通用对象列表进行比较

转载 作者:太空宇宙 更新时间:2023-11-03 22:07:16 25 4
gpt4 key购买 nike

我如何使用 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() { }
}

string[] 数组包含图片的文件路径。我正在尝试检查通用列表是否已包含此特定图片的路径。

图片的通用列表如下所示:

List<PicInfo> pi = new List<PicInfo>();

如果通用列表已经有该图片,我想从 string[] 数组中删除该项目。

我可以使用 foreach 循环执行此操作并将项目 1 对 1 进行比较。但我如何使用 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();

关于C# 将字符串 [] 数组与通用对象列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com