从对象集合中查找对象

时间:2018-11-28 12:19:46

标签: c# .net

我上课

public class ABC
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Enum Msg { get; set; }
}

以及此类和单个对象的集合

List<ABC> objColl = new List<ABC>();
ABC obj = new ABC();

假设集合中有项目,我正在尝试查找集合中已存在的单个对象。 我想在该集合中找到一个对象,无论它是否存在。

我已经尝试过

var res = objColl.contains(obj);

它总是返回false。我不想比较对象或循环的每个属性。

4 个答案:

答案 0 :(得分:2)

Any与您的条件一起使用:

bool res = objColl.Any(s => s.Id == obj.Id);

如果要使用Contains,请覆盖Equals()

答案 1 :(得分:1)

调用Contains()时,它将在集合中搜索与您提供的参数相等的项。由于尚未覆盖Equals(),因此它将使用默认实现。

您有两个选择:

  1. 重写Equals()类中的ABC,以指定仅检查要检查的属性;
  2. 使用LINQ:objColl.Any(e => e.[some property] == obj.[some property])

答案 2 :(得分:1)

您可以使用FirstOrDefault()

  

返回序列的第一个元素,如果没有则返回默认值   找到元素。

var res = objColl.FirstOrDefault(x => x.Id == obj.Id);

答案 3 :(得分:0)

var res = objColl.Where(s=>s.Id == obj.Id).Any();