合并两个list<>并删除其中的重复项

本文关键字:删除 两个 list 合并 | 更新日期: 2023-09-27 18:11:06

我有两个列表对象。我把它们组合成一个列表。同时结合,我需要删除重复。TweetID是要比较的字段。

List<TweetEntity> tweetEntity1 = tt.GetTweetEntity(Convert.ToInt16(pno), qdecoded, longwoeid );
List<TweetEntity> tweetEntity2 = tt.GetTweetEntity(Convert.ToInt16(pno), qdecoded);
List<TweetEntity> tweetEntity = tweetEntity1.Concat(tweetEntity2).ToList(); 

我合并了两个列表,但无法过滤掉重复的列表。是否有任何内置函数来删除列表中的重复项?

合并两个list<>并删除其中的重复项

您可以使用Union方法。

List<TweetEntity> tweetEntity = tweetEntity1.Union(tweetEntity2).ToList();

但是,您首先要为TweetEntity覆盖EqualsGetHashCode

您可以使用Distinct()方法。

tweetEntity1.Concat(tweetEntity2).Distinct().ToList(); 

使用Union linq扩展,

tweetEntity1.Union(tweenEntity2).ToList()

功能相当于.ConcatDistinct的组合,但更容易输入,运行速度更快,

您可以使用linq Distinct方法,但是您必须实现IEqualityComparer<T>

public class TweetEntityComparer<TweetEntity> 
{
    public bool Equals(TweetEntity x, TweetEntity y)
    {
        //Determine if they're equal
    }
    public int GetHashCode(TweetEntity obj)
    {
        //Implementation
    }
}
List<TweetEntity> tweetEntity = tweetEntity1.Concat(tweetEntity2).Distinct().ToList();

您也可以选择使用Union

List<TweetEntity> tweetEntity = tweetEntity1.Union(tweetEntity2).ToList();