【问题标题】:What can be Short cut Code for following什么可以是以下快捷方式代码
【发布时间】:2013-03-28 09:45:51
【问题描述】:

短代码:

    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 的 where 列表转换为通用列表

【问题讨论】:

    标签: vb.net linq foreach


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      简单点怎么样

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2017-04-19
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多