我有一个包含订单商品集合的私有类变量:
Private _Items As New System.Collections.Generic.SortedList(Of Integer, OrderItem)
我正在尝试做什么使用IEnumerable的.Where()扩展方法(我认为)通过类上的属性获取和设置项目的子集。有点像:
Public Property StandardItems() As SortedList(Of Integer, OrderItem)
Get
Return _Items.Where(Function(ItemID As Integer, Item As OrderItem) Item.ItemType = "SomeValue")
End Get
Set(ByVal value As SortedList(Of Integer, OrderItem))
_Items = value
End Set
End Property
这可能吗?如果是这样,我将如何实现它?我对MSDN文档,Visual Studio智能感知或反复试验没有太多好运。
答案 0 :(得分:1)
Where
扩展方法返回IEnumerable(Of KeyValuePair(Of Integer, OrderItem))
。您可以将属性的类型更改为。
如果您需要返回已排序的列表,则必须从Where
方法的输出中手动创建:
Dim whereQuery = ...
Return New SortedList(Of Integer, OrderItem)(whereQuery _
.ToDictionary(Function(x) x.Key, Function(x) x.Value))
我有点担心你的二传手的行为。您想通过该属性替换整个排序列表吗?它的名字说它只是标准物品(过滤的一组物品),但设置它会改变所有物品。