Quantcast group by in linq2entity

group by in linq2entity

by Neon Quach 29. October 2010 15:57

Trong bài blog này mình sẽ hướng dẫn các bạn, làm thế nào để group by sử dụng linq2entiy, với mục đích demo, mình sẽ tạo 1 lớp rất đơn giản như sau:

class City
{
    public string Country { getset; }
    public string Name { getset; }
}

VB.NET:

    Class City
        Public Property Name As String
        Public Property Country As String
    End Class

Sau đó tạo 1 danh sách các Cities khởi gián giá trị cho dánh sách đó như sau:

List<City> cities = new List<City>
{
    new City{ Country="Vietnam",Name="Ha Noi"},
    new City{ Country="USA",Name="New York"},
    new City{ Country="USA",Name="Boston"},
    new City{ Country="Tokyo",Name="Japan"},
    new City{ Country="Milan",Name="Spain"},
    new City{ Country="Amsterdam",Name="Netherland"},
    new City{ Country="Vietnam",Name="Hai Phong"},
    new City{ Country="Vietnam",Name="Ho Chi Minh"},
};

VB.NET

        Dim cities As New List(Of City)() From _
       {
           New City With {.Country = "Vietnam", .Name = "Ha Noi"},
           New City With {.Country = "USA", .Name = "New York"},
           New City With {.Country = "USA", .Name = "Boston"},
           New City With {.Country = "Tokyo", .Name = "Japan"},
           New City With {.Country = "Milan", .Name = "Spain"},
           New City With {.Country = "Amsterdam", .Name = "Netherland"},
           New City With {.Country = "Vietnam", .Name = "Hai Phong"},
           New City With {.Country = "Vietnam", .Name = "Ho Chi Minh"}
       }


Giờ mình sẽ muốn nhóm danh sách trên theo Country mình làm như sau:

var query = cities.GroupBy(c => c.Country).Select(g => new
    {
        CountryName = g.Key,
        CityNames = g.Select(n => n.Name).ToList()
    });

VB.NET:

        Dim query = cities.GroupBy(Function(c) c.Country).[Select](Function(g) New With { _
        .CountryName = g.Key, _
        .CityNames = g.[Select](Function(n) n.Name).ToList()})

Để group by trong Linq2Entiy mình sử dụng phương thức mở rộng GroupBy, tiếp theo mình sẽ get các giá trị bằng phương thức mở rộng Select vào anonymous type, g.Key là thuộc tính chúng ta group

foreach (var country in query)
{
    Console.WriteLine("Follow cities in: {0}", country.CountryName);
    foreach (var item in country.CityNames)
    {
        Console.WriteLine(item);
    }
}

VB.NET:
        For Each country In query
            Console.WriteLine("Follow cities in: {0}", country.CountryName)
            For Each item In country.CityNames
                Console.WriteLine(item)
            Next
        Next

Dòng foreach bên trên sẽ hiển thị kết quả sau khi group bởi Country



GroupByInLinq2Entity.rar (70.65 kb)

Tags: , ,


Categories: c# | vb.net | linq2entity

blog comments powered by Disqus

About me

I'm  currently employed as Software developer at devinition.com and also a Microsoft Certified Technology Specialist (MCTS), Microsoft Certified Professional Developer (MCPD) in Net Framework 2.0 and 3.5: Web Applications and MCTS .NET Framework 3.5, ADO.NET Applications

Powered by BlogEngine.NET 2.5.0.5 - Eco Theme by n3o Web Designers