如何在C#中比较这些对象的一个??或多个属性上的两个对象列表?
发布时间:2020-12-16 00:03:29 所属栏目:百科 来源:网络整理
导读:首先,我必须说我不是一个经验丰富的程序员.我在StackOverflow上查看了类似的问题,但似乎没有找到一个合适的答案,我可以用我有限的技能来实现. 在C#中,我需要根据这些对象中一个或多个属性的值来比较两个对象列表.我想创建两个新列表,一个是左边存在的对象,但
首先,我必须说我不是一个经验丰富的程序员.我在StackOverflow上查看了类似的问题,但似乎没有找到一个合适的答案,我可以用我有限的技能来实现.
在C#中,我需要根据这些对象中一个或多个属性的值来比较两个对象列表.我想创建两个新列表,一个是左边存在的对象,但是在一些属性值中存在差异,或者在右侧列表中根本不存在,反之亦然. 在我只需要根据一个值比较两个值之前,所以我不必处理对象而是使用字符串,所以我做了类似这样的事情: (LeftItems and RightItems are Entities) List<String> leftList = new List<string>(); List<String> rightList = new List<string>(); List<String> leftResultList = new List<string>(); List<String> rightResultList = new List<string>(); List<String> leftResultObjList = new List<string>(); List<String> rightResultObjList = new List<string>(); foreach (item i in leftItems) { leftlist.Add(i.value); } //same for right foreach (string i in leftList) { if(!rightList.contains(i)) { leftResultList.Add(i); } } //same for the right list 现在我必须比较多个值,所以我创建了一个类,它有几个我需要比较的属性,所以我想做与上面相同的,但使用对象属性: class CompItems { string _x; string _y; public CompItems(string x,string y) { _x = x; _y = y; } } foreach (item i in leftItems) { leftList.Add(new CompItem(i.value1,i.value2)); } //same for the right list foreach (CompItem c in leftItems) { // Here is where things go wrong if(one property of object in rightItems equals property of object in leftItems) && some other comparisons { resultLeftObjList.Add(c) } } //And the same for the right list 解决方法
您可以使您的类继承自
IComparable,并根据您想要的属性进行比较,如下所示:
class Employee : IComparable { private string name; public string Name { get { return name; } set { name = value ; } } public Employee( string a_name) { name = a_name; } #region IComparable Members public int CompareTo( object obj) { Employee temp = (Employee)obj; if ( this.name.Length < temp.name.Length) return -1; else return 0; } } 您可以找到此解决方案here的详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |