我正在尝试找出在我的收藏中查找项目的最有效方法。首先,这里是一些更多的信息/要求:
- 顺序并不重要。
- 必须不使用枚举查找。
- 集合将非常大,但在初始后不会被修改 人口稠密。
- 必须能够通过键(字符串)进行查找,但也能够通过项目类型的两个属性之一进行查找。
我目前正在使用一个继承自 KeyedCollection 的自定义集合,它使用 GetKeyForItem() 从项目中提取一个字符串,用作键,到目前为止没问题。
问题在于我希望能够查找项目的方式。据我了解,除了“脏”枚举之外,使用与添加项相同的方法查找项,无论是使用自定义相等比较器还是键。
我错过了什么吗?创建三个具有相同项目但对我希望能够查找的每个属性具有不同 GetKeyFoItem() 实现的集合是否可以接受?或者我可以使用另一个集合吗?
我希望这些信息足以说明我的问题。如果您有任何建议,我将不胜感激。
最佳答案
为此尝试使用 Linq! Linq 是非常强大的东西!
这是一个小例子......
public class YourClass
{
public int ClassIntProperty { get; set; }
public string ClassStringProperty { get; set; }
}
List<YourClass> YourClassItemsList = new List<YourClass>();
public void SeekItem()
{
//Get several items
var t = YourClassItemsList.Where(item => item.ClassIntProperty == 0).AsEnumerable();
var tt = YourClassItemsList.Where(item => item.ClassStringProperty == "abc").AsEnumerable();
//Get one item
var ttt = YourClassItemsList.FirstOrDefault(item => item.ClassIntProperty == 0);
}
关于c# - 是否有一个集合不仅可以通过键查找项目,还可以通过项目的属性查找项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518987/