VB.NET中LINQ TO List泛型查询语句(分组,聚合函数

页面导航:首页 > 软件编程 > vb.net > VB.NET中LINQ TO List泛型查询语句(分组,聚合函数

VB.NET中LINQ TO List泛型查询语句(分组,聚合函数

来源: 作者: 时间:2016-01-15 15:10 【

print?Public Class LinqToList #39;LINQ在C#中使用比较方便,但是在VB中使用比较麻烦,复杂,和C#用法并不太一样 Dim listNew As List(Of Product) = New List(Of Product) #39;新商品 Dim li...
print?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 
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<