合并两个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();
我合并了两个列表,但无法过滤掉重复的列表。是否有任何内置函数来删除列表中的重复项?
您可以使用Union
方法。
List<TweetEntity> tweetEntity = tweetEntity1.Union(tweetEntity2).ToList();
但是,您首先要为TweetEntity
覆盖Equals
和GetHashCode
。
您可以使用Distinct()
方法。
tweetEntity1.Concat(tweetEntity2).Distinct().ToList();
使用Union
linq扩展,
tweetEntity1.Union(tweenEntity2).ToList()
功能相当于.Concat
和Distinct
的组合,但更容易输入,运行速度更快,
您可以使用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();