我上课
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。我不想比较对象或循环的每个属性。
答案 0 :(得分:2)
将Any
与您的条件一起使用:
bool res = objColl.Any(s => s.Id == obj.Id);
如果要使用Contains
,请覆盖Equals()
。
答案 1 :(得分:1)
调用Contains()
时,它将在集合中搜索与您提供的参数相等的项。由于尚未覆盖Equals()
,因此它将使用默认实现。
您有两个选择:
Equals()
类中的ABC
,以指定仅检查要检查的属性; 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();