我有一个通用的值列表。我想检查该通用列表中是否存在Id。
最简单的方法是什么?
例如
List<someCustomObject> mylist = GetCustomObjectList();
int idToCheckFor = 12;
我想通过检查每个someCustomObject.Id = idToCheckFor
来查看列表中的任何自定义对象中是否存在12如果找到匹配,我很高兴我的方法将返回bool true。我只想弄清楚是否有一种简单的方法,而不是循环遍历列表中的每个项目,以查看idToCheckFor == someCustomObject.id,如果找到匹配项,则将变量设置为true。我确信必须有更好的方法来解决这个问题。
答案 0 :(得分:6)
如果您使用的是.NET 3.5,那么使用LINQ to对象很容易:
return myList.Any(o => o.ID == idToCheckFor);
除此之外,循环通常是您唯一的选择。
答案 1 :(得分:2)
Boolean b = myList.Find(obj => obj.id == 12) != null;
答案 2 :(得分:1)
LINQ让生活更轻松
mylist.Where(x => x.id == idToCheckFor).Any()
由于
答案 3 :(得分:0)
我认为您使用的是错误的数据结构。你需要的是:
Dictionary<int, someCustomObject> myDictionary = GetCustomObjectDictionary();
现在,您可以轻松检查ID是否存在且性能非常出色。
return myDictionary.ContainsKey(idToCheckFor);
答案 4 :(得分:0)
bool found = mylist.Any(p => p.Id == idToCheckFor);
答案 5 :(得分:0)
bool bExists = myList.Any(x=>x.id == idToCheckFor);
答案 6 :(得分:0)
if(mylist.Any(Item => Item.Id == idToCheckFor))
{
do();
}
答案 7 :(得分:0)
返回myList.Exists(item =&gt; item.Id == idToCheckFor);
对于linq资源,您可以查看101 linq samples
答案 8 :(得分:-1)
使用LINQ to Objects。如下所示:
var result = from l in mylist
where l.id = 12
select l;
return result != null;