如何知道对象包含在列表中忽略大小写

时间:2014-05-01 07:22:28

标签: c# .net

我想知道如何比较一个对象,如果列表包含该对象则忽略大小写 假设以此为例

Class A
{
    public string p1;
    public string p2;
}

Class B
{
    List<A> lst=new List<A>();
    A obj=new a();
    A obj1=new a();

    obj1.p1="ABCD";
    obj1.p2="xyz";

    obj.p1="abcd";
    obj.p2="XYZ";
    lst.add(obj1);

    lst.contains(obj)//return false
}

所以我想知道如何比较它?

3 个答案:

答案 0 :(得分:4)

您可以实施IEquatable来控制对象的比较方式。然后,您可以通过实现Equals()方法确切地指定比较的工作方式:

 public bool Equals(A other)
 {
     return this.P1.ToLower().Equals(other.P1.ToLower());
 }

你的

  

lst.Contains(OBJ)

然后应该按你的需要工作。

答案 1 :(得分:0)

在A类中,重写Equals方法以比较忽略大小写的每个属性。

然后使用:

bool found = lst.FirstOrDefault(x => x.Equals(obj)) != null;

答案 2 :(得分:0)

var result = lst.FirstOrDefault(c => c.p1 == obj.p1 && c.p2 == obj.p2);
if(result != null)
{
    //Your Code is here.
}