using System.Collections.Generic;
public static void Main()
List<Article> articles = new List<Article> {
new Article { ArticleId = 1, ArticleName = "Article1" },
new Article { ArticleId = 2, ArticleName = "Article2" },
new Article { ArticleId = 3, ArticleName = "Article3" },
List<Category> categories = new List<Category> {
new Category { CategoryId = 1, CategoryName = "Category1" },
new Category { CategoryId = 2, CategoryName = "Category2" },
new Category { CategoryId = 3, CategoryName = "Category3" },
List<ArticleCategory> articleCategories = new List<ArticleCategory> {
new ArticleCategory { ArticleId = 1, CategoryId = 1 },
new ArticleCategory { ArticleId = 2, CategoryId = 2 },
new ArticleCategory { ArticleId = 2, CategoryId = 3 },
new ArticleCategory { ArticleId = 3, CategoryId = 2 },
var query = from ac in articleCategories
join a in articles on ac.ArticleId equals a.ArticleId
join c in categories on ac.CategoryId equals c.CategoryId
group c by a.ArticleName into g
select new { ArticleName = g.Key, Categories = g.ToList() };
Console.WriteLine(a.ArticleName);
foreach(var c in a.Categories)
Console.WriteLine(" " + c.CategoryName);
public int ArticleId { get; set; }
public string ArticleName { get; set; }
public class ArticleCategory
public int ArticleId { get; set; }
public int CategoryId { get; set; }
public int CategoryId { get; set; }
public string CategoryName { get; set; }