Dưới đây là một ví dụ sử dụng vòng lặp foreach lồng nhau, tôi không chắc chắn làm thế nào bạn sẽ làm điều này trong một chuỗi duy nhất của báo cáo LINQ, có lẽ với rất nhiều của selectmanys?
var transactions = new[]{
new{Category = "1", Form = "1", Title = "Trans1" },
new{Category = "1", Form = "1", Title = "Trans2" },
new{Category = "1", Form = "1", Title = "Trans3" },
new{Category = "1", Form = "2", Title = "Trans1" },
new{Category = "1", Form = "2", Title = "Trans2" },
new{Category = "1", Form = "2", Title = "Trans3" },
new{Category = "2", Form = "1", Title = "Trans1" },
new{Category = "2", Form = "1", Title = "Trans2" },
new{Category = "2", Form = "1", Title = "Trans3" },
new{Category = "1", Form = "3", Title = "Trans1" },
new{Category = "1", Form = "3", Title = "Trans2" },
new{Category = "1", Form = "3", Title = "Trans3" },
};
foreach(var byCategory in transactions.GroupBy(x => x.Category))
{
Console.WriteLine(byCategory.Key);
foreach(var byForm in byCategory.GroupBy(x => x.Form))
{
Console.WriteLine("\t" + byForm.Key);
foreach(var trans in byForm)
{
Console.WriteLine("\t\t" + trans.Title);
}
}
}
Chỉ vì tôi đã tò mò những gì nó sẽ trông giống như tôi đã đưa ra những điều sau đây, BẠN NÊN KHÔNG SỬ DỤNG NÀY TRONG SẢN XUẤT MÃ vì nó là vô lý (nếu bạn có một cấu trúc dữ liệu như thế này nó sẽ bị phá vỡ lên thành cái gì đó giống như Dictionary<CategoryName, FormGroup>
hay cái gì với các loại có ý nghĩa)
Dictionary<string, Dictionary<string, List<string>>> tooManyDictionaries = transactions
.GroupBy(x => x.Category)
.ToDictionary(
catGroup => catGroup.Key,
catGroup => catGroup
.GroupBy(x => x.Form)
.ToDictionary(
formGroup => formGroup.Key,
formGroup => formGroup.Select(x => x.Title).ToList()));