我有两个列表 AuthorList 和 AuthorList2。目前我正在使用带有简单 IEqualityComparer 类的 union。我希望有一个结果列表,并且 AuthorList 和 AuthorList2 中没有任何重复项,如果这些列表中有任何重复项,则需要从列表中删除它们,并且需要为重复项将 Author 类的 Assigned 属性设置为 true。
来自两个 AuthorList 的现有信息:
产品 ID 和已分配
1、假的
2、假的
3、假的
1、假的
结果列表:
产品 ID 和已分配
1、真
2、假的
3、假的
该逻辑需要过滤掉重复项,如果这两个列表具有相同的元素,请更改false -> true。
namespace HelloWorld
{
class Hello
{
static void Main()
{
List<Author> AuthorList = new List<Author>
{
new Author(1, false),
new Author(2, false),
new Author(3, false)
};
List<Author> AuthorList2 = new List<Author>
{
new Author(1, false)
};
var compareById = new AuthorComparer(false);
var result = AuthorList.Union(AuthorList2, compareById);
foreach (var item in result)
{
Console.WriteLine("Result: {0},{1}", item.ProductId, item.Assigned);
}
Console.ReadKey();
}
public class AuthorComparer : IEqualityComparer<Author>
{
private bool m_withValue;
public AuthorComparer(bool withValue)
{
m_withValue = withValue;
}
public bool Equals(Author x, Author y)
{
return (x.ProductId == y.ProductId);
}
public int GetHashCode(Author x)
{
return x.ProductId.GetHashCode();
}
}
public class Author
{
private int productId;
private bool assigned;
public Author(int productId, bool assigned)
{
this.productId = productId;
this.assigned = assigned;
}
public int ProductId
{
get { return productId; }
set { productId = value; }
}
}
}
}
拉丁的传说
相关分类