gpt4 book ai didi

c# - 比较两个通用列表并删除重复项

转载 作者:太空狗 更新时间:2023-10-29 20:59:17 24 4
gpt4 key购买 nike

我有两个通用列表,一个称为“精选”,另一个称为“过滤”。

List<Content> Featured = new List<Content>();
List<Content> Filtered = new List<Content>();

两者都包含像这样的简单类的“内容”项:

public class Content
{
public long ContentID { get; set;}
public string Title { get; set; }
public string Url { get; set; }
public string Image { get; set; }
public string Teaser { get; set; }

public Content(long contentId, string title, string url, string image, string teaser)
{
ContentID = contentId;
Title = title;
Url = url;
Image = image;
}
}

任何出现在“已过滤”中但也出现在“精选”中的项目都需要从“已过滤”中删除。此外,这两个列表随后将合并为一个通用列表,其中“特色”项目首先出现。

我知道我可以编写几个 foreach 循环来执行此操作,但我忍不住觉得一定有一种使用 LINQ 的更优雅的方法。

我正在使用 C# 4.0。

最佳答案

如果您定义了 IEqualityComparer,则可以使用 Union 方法:

List<Content> FeaturedAndFiltered = Featured.Union(Filtered, new MyContentComparer());

MyContentComparer 的粗略实现是:

public class ContentEqualityComparer : IEqualityComparer<Content>
{

public bool Equals(Content c1, Content c2)
{
return (c1.ContentID == c2.ContentID);
}


public int GetHashCode(Content c)
{
return c.ContentID.GetHashCode();
}

}

关于c# - 比较两个通用列表并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395645/

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