【发布时间】:2012-05-08 12:10:45
【问题描述】:
目前我有以下语法(列表是一个包含具有许多不同属性的对象的列表(其中标题是其中之一):
for (int i=0; i < list.Count; i++)
{
if(title == list[i].Title)
{
//do something
}
}
我怎样才能访问list[i].Title 而不必遍历我的整个收藏?由于我的列表往往会变得很大,这可能会影响我的程序的性能。
我的程序中有很多类似的语法(通过 for 循环和索引访问公共属性)。但我确信一定有更好更优雅的方式来做到这一点?
find 方法似乎是一个选项,因为我的列表包含对象。
【问题讨论】:
-
您可以使用 linq,例如 Find,或者您可以实现自己的 Dictionary 并支持 INotifyCollectionChanged
-
字典对键的查找速度非常快,但键必须是唯一的。由于标题不是唯一的,因此需要循环。优化类,确保Title得到;不马虎。如果对象具有内部主键,则使用该键覆盖 GetHashCode。
标签: c# wpf collections