110,499
社区成员
发帖
与我相关
我的任务
分享
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main
(
string[] args
)
{
List<BsonDocument> bsonList = new List<BsonDocument>()
{
new BsonDocument()
{
Id = "1",
Code = "No.1",
Codename = "张三"
},
new BsonDocument()
{
Id = "2",
Code = "No.2",
Codename = "李四"
},
new BsonDocument()
{
Id = "3",
Code = "No.3",
Codename = "王五"
},
};
List<BsonDocument> list = new List<BsonDocument>()
{
new BsonDocument()
{
Id = "1",
Code = "No.1",
Codename = "张三"
},
new BsonDocument()
{
Id = "2",
Code = "No.2",
Codename = "李二蛋"
},
new BsonDocument()
{
Id = "3",
Code = "No.3",
Codename = "王二小"
},
new BsonDocument()
{
Id = "4",
Code = "No.4",
Codename = "吴铁柱"
},
};
var result = bsonList
.Concat(list)
.Distinct(new BsonDocumentComparer());
foreach (var bsonDocument in result)
{
Debug.Print($"id:{bsonDocument.Id}\tcode:{bsonDocument.Code}\tCodename:{bsonDocument.Codename}\t");
}
}
}
class BsonDocument
{
public string Id { get; set; }
public string Code { get; set; }
public string Codename { get; set; }
}
class BsonDocumentComparer : IEqualityComparer<BsonDocument>
{
public bool Equals
(
BsonDocument x,
BsonDocument y
)
{
return x.Id == y.Id &&
x.Code == y.Code;
}
public int GetHashCode
(
BsonDocument obj
)
{
unchecked
{
var hashCode = (obj.Id != null ? obj.Id.GetHashCode() : 0);
hashCode = (hashCode * 397) ^ (obj.Code != null ? obj.Code.GetHashCode() : 0);
return hashCode;
}
}
}
}
输出结果:
id:1 code:No.1 Codename:张三
id:2 code:No.2 Codename:李四
id:3 code:No.3 Codename:王五
id:4 code:No.4 Codename:吴铁柱
public class test
{
public string id { get; set; }
public string name { get; set; }
}
public class test比较器:IEqualityComparer<test>
{
public bool Equals(test x, test y)
{
return x.id.Equals(y.id);
}
public int GetHashCode(test obj)
{
return obj.id.GetHashCode();
}
}
List<test> lstA=new List<test>();
lstA.Add(new test()
{
id="1",name = "1"
});
lstA.Add(new test()
{
id = "2",
name = "2"
});
List<test> lstB = new List<test>();
lstB.Add(new test()
{
id = "1",
name = "2"
});
lstB.Add(new test()
{
id = "3",
name = "3"
});
var res = lstB.Union(lstA, new test比较器()).ToList();
//Lambda表达式去重法:
bsonList.Where(x,i) => bosonList.FindIndex(z => z.id == x.id and z.code == x.code) ==i);