Axo*_*onn 2 .net c# linq sortedlist data-structures
如果你问我,傻.但是这条消息在这里是因为我会假设(可能是正确的)我是愚蠢的,而不是微软.那么......有什么我想念的吗?为什么他们没有为这个孩子提供"查找"方法?find可以在值上运行,它们是对象,所以我可以这样做:
someObject = SortedList.Values.Find(order => order.OrderID == orderID);
Run Code Online (Sandbox Code Playgroud)
您可能正在寻找LINQ中的.First(...)或.Single(...)(或其OrDefault变体),但这只适用于实现的类型IEnumerable<T>.A SortedList不是强类型的,因此Lambda不起作用.看看LINQ吧.Cast<T>().
你可能想要:
SortedList.Values.Cast<Order>().FirstOrDefault(order => order.OrderID == orderID);
Run Code Online (Sandbox Code Playgroud)
职高的,如果你是在谈论SortedList<TKey, TValue>,调用Cast()是不必要的.
顺便说一句,如果你正在以这种方式Values探索SortedList,那么你很可能会使用错误的选择/使用错误的数据结构.
编辑:
如果您不能在项目中使用LINQ,也不希望分别维护由订单的date和orderID键入的单独数据结构(如Ben Voigt所建议的那样),我认为别无选择,只能自己实现搜索:
foreach(ShopOrder order in sortedList.Values)
{
if(order.OrderID == orderID) return order;
}
return null; // or throw an exception, whichever you find appropriate.
Run Code Online (Sandbox Code Playgroud)
如果要进一步概括,请编写自己的FirstOrDefault实现.
| 归档时间: |
|
| 查看次数: |
2976 次 |
| 最近记录: |