zoukankan      html  css  js  c++  java
  • VB.NET中LINQ TO List泛型查询语句(分组,聚合函数)

    Public Class LinqToList
        'LINQ在C#中使用比较方便,但是在VB中使用比较麻烦,复杂,和C#用法并不太一样
        Dim listNew As List(Of Product) = New List(Of Product)  '新商品
        Dim listOld As List(Of Product) = New List(Of Product)  '旧商品
    
        '****** 给 listNew 加载数据 此处省略******
        '****** 给 listOld 加载数据 此处省略******
    
        '查询 listNew 中的最高价 price1,并按 price,name,unit,model,node分组
        Dim temp = From Item In listNew
                        Group Item By Key = New With {Key Item.Name, Key Item.Unit, Key Item.Model}
                        Into g = Group Select New With {.price1 = (Aggregate p In g Into Average(p.Price)),
                                                        .price = (From p In g Select p.Price),
                                                        .name = Key.Name,
                                                        .unit = Key.Unit,
                                                        .model = Key.Model,
                                                        .note = (From p In g Select p.Note)}    'note并未在分组中,无法再key中获取
    
        '合并listNew 和listOld ,并按 price,name,unit,model,node分组,求出合并后的最高价price1,相同产品的个数.count
        Dim tempMax = From Item In
                ((From Contact In listNew).Union(From Shipment In listOld))
                Group Item By Key = New With {Key Item.Name, Key Item.Unit, Key Item.Model}
                Into g = Group Select New With {.price1 = (Aggregate p In g Into Max(p.Price)),
                                                .price = (From p In g Select p.Price),
                                                .name = Key.Name,
                                                .unit = Key.Unit,
                                                .model = Key.Model,
                                                .note = (From p In g Select p.Note),
                                                .count = g.Count()}
    
        '最低价 .price1 = (Aggregate p In g Into Max(p.Price)) 改成 .price1 = (Aggregate p In g Into Min(p.Price)) 
        '平均价 .price1 = (Aggregate p In g Into Max(p.Price)) 改成 .price1 = (Aggregate p In g Into Average(p.Price))
    End Class
    
    Public Class Product
        Private mPrice As Double     '价格
        Private mName As String      '名称
        Private mUnit As String      '单位
        Private mModel As String     '规格
        Private mNote As String      '备注
        Public Property Price() As Double   '价格
            Get
                Return mPrice
            End Get
            Set(ByVal value As Double)
                mPrice = value
            End Set
        End Property
    
        Public Property Name() As String    '名称
            Get
                Return mName
            End Get
            Set(ByVal value As String)
                mName = value
            End Set
        End Property
    
        Public Property Unit() As String    '单位
            Get
                Return mUnit
            End Get
            Set(ByVal value As String)
                mUnit = value
            End Set
        End Property
    
        Public Property Model() As String   '规格
            Get
                Return mModel
            End Get
            Set(ByVal value As String)
                mModel = value
            End Set
        End Property
    
        Public Property Note() As String    '备注
            Get
                Return mNote
            End Get
            Set(ByVal value As String)
                mNote = value
            End Set
        End Property
    End Class
    
  • 相关阅读:
    @responseBody注解的使用
    springmvc下的省市县三级联动
    select 动态添加option函数
    清空select标签中option选项的4种不同方式
    javascript删除option选项的多种方法总结
    js如何获取select下拉框的value以及文本内容
    如何设置select下拉禁止选择
    java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
    转:通过他人完成任务的艺术
    ***周鸿祎谈创业:很多程序员高智商 但我一看就知道他们不会成功
  • 原文地址:https://www.cnblogs.com/huijiBreathe/p/3180667.html
Copyright © 2011-2022 走看看