我有一个对象:
public class MyObject
{
int id;
string value;
}
Run Code Online (Sandbox Code Playgroud)
我也有一个清单:
List<MyObject> list = new List<MyObject>;
for(int i=0;i;i<100000;i++)
{
list.Add(new MyObject(i, string.Format("Item {0}", i));
}
Run Code Online (Sandbox Code Playgroud)
列表将是:
1, "Item 1"
2, "Item 2"
....
99999, "Item 99999"
Run Code Online (Sandbox Code Playgroud)
此列表是按ID字段排序的排序列表.请注意,这是一个描述排序列表的示例,它不像上面的示例那样简单.
我想根据ID字段找到一个有序列表项.我不知道.NET Framework是否支持在没有枚举的情况下快速搜索有序列表.
我对表现感兴趣,因为列表很重要.谢谢.
最好的祝福.
您可以使用二进制搜索.
您可以使用内置实现,提供IComparer<T>比较类型id属性的自定义:
var objToFind = new MyObject { id = 42 };
int foundIndex = yourList.BinarySearch(objToFind, new MyObjectIdComparer());
// ...
public class MyObjectIdComparer : Comparer<MyObject>
{
public override int Compare(MyObject x, MyObject y)
{
// argument checking etc removed for brevity
return x.id.CompareTo(y.id);
}
}
Run Code Online (Sandbox Code Playgroud)