什么可以是捷径下面的代码

时间:2013-03-28 09:45:52

标签: vb.net linq foreach

短代码:

    Dim NewItemList As List(Of OrderDetail) = New List(Of OrderDetail)

    For Each Item As OrderDetail In OrderInfoDetails
        If Item.Status = EnumOrderStatus.Taken Then
            NewItemList.Add(Item)
        End If
    Next

尝试:

    Dim NewItemList As List(Of OrderDetail) = From Item As OrderDetail In OrderInfoDetails Where Item.Status = EnumOrderStatus.Taken Select Item

但得到一个错误,说无法将orderdetail列表转换为通用列表

3 个答案:

答案 0 :(得分:1)

将查询包装在List构造函数中:

Dim NewItemList = New List(Of OrderDetail)(From Item As OrderDetail In OrderInfoDetails Where Item.Status = EnumOrderStatus.Taken Select Item)

答案 1 :(得分:0)

使用Where(...)方法通过lambda表达式测试Status属性与EnumOrderStatus.Taken的等效性,然后调用ToList()方法

答案 2 :(得分:0)

如何简单地

Dim NewItemList = OrderInfoDetails.Where(Function(e) e.Status = EnumOrderStatus.Taken).ToList()

对于简单的Where,我更喜欢方法语法。您需要List(Of OrderDetail)而不是IEnumerable(Of OrderDetail),因此您只需拨打ToList()扩展程序。