我有一个自定义对象(属性必须是字符串):
public class Nemesis
{
public String Dex_ID;
public String Value;
}
我有一个特定的函数,它创建该对象的新实例,向它们添加值,然后将它们添加到此List:
private List<Nemesis> _nemesisList;
public List<Nemesis> NemesisList
{
get { return _nemesisList; }
set { _nemesisList = value; }
}
通常情况下,我会用它来检查现有的东西:
if (!NemesisList.Contains(nemesis))
{
NemesisList.Add(nemesis);
}
但是这一次我想检查我的List是否已经包含 nemesis 并且具有相同的 nemesis.Dex_ID 。我该怎么做?
答案 0 :(得分:9)
如果您只想检查ID字段并忽略其他字段,则可以执行以下操作:
if(!NemesisList.Any(n=> n.Dex_ID == nemesis.Dex_ID))
否则,如果您要对所有字段执行比较,则可以覆盖Equals
和GetHashCode
。
答案 1 :(得分:0)
Linq是你的朋友:
if (!myList.Any(x => x.Dex_ID == nemesis.Dex_ID)) myList.Add(nemesis)
答案 2 :(得分:0)
尝试使用以下LINQ:
var exists = NemesisList.Any(n=>n.Dex_Id==id)
答案 3 :(得分:0)
使用LINQ:
if (!NemesisList.Any(n => n.Dex_ID == nemesis.Dex_ID)) // ...
OR
if (!NemesisList.Select(n => n.Dex_ID).Contains(nemesis.Dex_ID)) // ...
更好的解决方案可能是创建一个字典。它们是为基于某些键值的快速查找而构建的。
if (!NemesisDict.ContainsKey(nemesis.Dex_ID)) // ...