zoukankan      html  css  js  c++  java
  • LINQ联接查询

        public class Category
        {
            public int IdCategory { get; set; }
            public string Name { get; set; }
        }
    
        public class Product
        {
            public string IdProduct { get; set; }
            public int IdCategory { get; set; }
            public string Description { get; set; }
        }
    
        class Program
        {
            List<Category> categories = new List<Category>(){
                   new Category{ IdCategory=1, Name="Pasta"},
                   new Category{ IdCategory=2, Name="Beverages"},
                   new Category{ IdCategory=3, Name="Other Food"}
                   };
            List<Product> products = new List<Product>(){
                    new Product{ IdCategory=1, IdProduct="PASTA01", Description="Tortellini"},
                    new Product{ IdCategory=1, IdProduct="PASTA02", Description="Spaghtti"},
                    new Product{ IdCategory=1, IdProduct="PASTA03", Description="Fusilli"},
                    new Product{ IdCategory=2, IdProduct="BEV01", Description="Water"},
                    new Product{ IdCategory=2, IdProduct="BEV02", Description="Orange Juice"}
                };
    
            static void Main(string[] args)
            {
                Program p = new Program();
                p.InnerJoin();
                p.GroupJoin();
                p.LeftJoin();
            }
    
            public void InnerJoin()
            {
                Console.WriteLine("------InnerJoin Test-----");
                //扩展方法
                var categoriesAndProducts =
                    categories.Join(products,
                                   c => c.IdCategory,
                                   p => p.IdCategory,
                                   (c, p) => new { c.IdCategory, CategoryName = c.Name, ProductDescription = p.Description }
                                       );
                //查询表达式
                //var categoriesAndProducts =
                //    from c in categories
                //    join p in products on c.IdCategory equals p.IdCategory
                //    select new { c.IdCategory, CategoryName = c.Name, ProductDescription = p.Description };
    
                //没有IdCategory=3的商品,所以不显示Other Food的Category
                foreach (var item in categoriesAndProducts)
                {
                    Console.WriteLine(item);
                }
            }
    
            //分组查询在SQL中没有对应
            public void GroupJoin()
            {
                Console.WriteLine("------GroupJoin Test-----");
                //扩展方法
                var categoriesAndProducts =
                    categories
                    .GroupJoin(products,
                               c => c.IdCategory,
                               p => p.IdCategory,
                               (c, p) => new { c.IdCategory, CategoryName = c.Name, Products = p }
                               );
                //查询表达式
                //var categoriesAndProducts =
                //    from c in categories
                //    join p in products on c.IdCategory equals p.IdCategory
                //         into productByCategory
                //    select new { c.IdCategory, CategoryName = c.Name, Products = productByCategory };
    
                foreach (var category in categoriesAndProducts)
                {
                    Console.WriteLine("{0} - {1}", category.IdCategory, category.CategoryName);
                    foreach (var product in category.Products)
                        Console.WriteLine("\t{0}", product.Description);
                }
            }
    
            //左外连接,包含所有外部源的内容,即使它缺少对应内部源的内容
            public void LeftJoin()
            {
                Console.WriteLine("------LeftJoin Test-----");
    
                //扩展方法
                var categoriesAndProducts =
                    categories
                    .GroupJoin(products,
                               c => c.IdCategory,
                               p => p.IdCategory,
                               (c, p) => new { c.IdCategory, CategoryName = c.Name, Products = p }
                               );
                foreach (var g in categoriesAndProducts)
                {
                    var temp = g.Products
                               .DefaultIfEmpty(new Product { IdCategory = 0, Description = string.Empty, IdProduct = string.Empty })
                               .Select(p => new { g.IdCategory, g.CategoryName, p.Description });
                    foreach (var item in temp)
                    {
                        Console.WriteLine(item);
                    }
                }
    
                //查询表达式
                //var categoriesAndProducts =
                //    from c in categories
                //    join p in products on c.IdCategory equals p.IdCategory
                //         into productByCategory
                //    from pc in productByCategory.DefaultIfEmpty(
                //         new Product { IdCategory = 0, Description = string.Empty, IdProduct = string.Empty })
                //    select new { c.IdCategory, CategoryName = c.Name, ProductDescription = pc.Description };
    
                ////没有IdCategory=3的商品,也显示
                //foreach (var item in categoriesAndProducts)
                //{
                //    Console.WriteLine(item);
                //}
            }
        }
  • 相关阅读:
    2.27
    string.Format("{0,-50}", "qqqqqqqqqqqq")
    dataGridView
    dataGridView添加列行
    设置拖拽事件,获取拖拽内容
    ,鼠标右键,将ListView的内容存入剪贴板
    winform ListView点击行表头,排序
    Aes加密解密
    C#get ,post HttpClient
    将json格式的string转化为对象
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2564324.html
Copyright © 2011-2022 走看看