Dùng LINQ chuyển dữ liệu cấu trúc phẳng (Flat) sang cấu trúc lồng (Nested)

Dùng LINQ chuyển dữ liệu cấu trúc phẳng (Flat) sang cấu trúc lồng (Nested)

Hôm nay làm 1 tip đơn giản nhưng hay xài trong các tình huống cần chuyển đổi qua lại giữa các cấu trúc dữ liệu. Cụ thể là từ cấu trúc Flat sang Nested.

Giả sử mảng gồm các đối tượng có cấu trúc phẳng như sau:

            var flatArray = new[] { 
                new { ProductId = 1, ProductName = "Word",      CategoryId = 1, CategoryName = "Office" },
                new { ProductId = 2, ProductName = "Excel",     CategoryId = 1, CategoryName = "Office" },
                new { ProductId = 3, ProductName = "FrontPage", CategoryId = 1, CategoryName = "Office" },
                new { ProductId = 4, ProductName = "DevC++",    CategoryId = 2, CategoryName = "IDE"    },
                new { ProductId = 5, ProductName = "Xcode",     CategoryId = 2, CategoryName = "IDE"    }
            };

 

 

Chỉ cần 1 câu LINQ tuy phức hợp nhưng cực kì dễ hiểu và hình dung:

clip_image001

 

Trong bài viết này, tôi có sử dụng tính năng anonymous type của C# 3.0 (1 tính năng tôi cực kỳ thích ở C#) có thể xây dựng nhanh những cấu trúc những đối tượng có tính chất tạm thời mà chả cần phải khai báo, quản lý class/struct.

 

One response to “Dùng LINQ chuyển dữ liệu cấu trúc phẳng (Flat) sang cấu trúc lồng (Nested)

  1. Pingback: Dùng LINQ chuyển dữ liệu cấu trúc lồng (Nested) sang cấu trúc phẳng (Flat) | CHUNG VĨNH KHANG'S BLOG·

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s