投影

□ 遍历数组索引,Select获取

            int[] indexes = {0, 2}; 
            string[] strs = {"a", "b", "c", "d"};
 
            var result = from i in indexes 
                select strs[i];
 
            foreach (string str in result) 
            { 
                Console.Write(str + " "); 
            } 
            Console.ReadKey();

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:a c

 

□ 使用集合索引投影匿名对象

        static void Main(string[] args) 
        { 
            int[] numbers = {0, 3, 4, 5, 7}; 
            var result = numbers.Select((n, index) => new {Num = n, IsValueEqualIndex = (n == index)}); 
            foreach (var item in result) 
            { 
                Console.WriteLine("{0}:{1}",item.Num,item.IsValueEqualIndex); 
            } 
            Console.ReadKey(); 
        }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:

 

□ 2个集合的笛卡尔积

            int[] numberA = {0,2}; 
            int[] numberB = {1,3};
 
            var result = from a in numberA 
                from b in numberB 
                select new {a, b}; 
            foreach (var item in result) 
            { 
                Console.WriteLine("{0},{1}",item.a,item.b); 
            } 
            Console.ReadKey();

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:

 

□ 笛卡尔积应用,列出所有客户的所有订单

   public class Customer 
    { 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public List<Order> Orders { get; set; } 
    }
 
    public class Order 
    { 
        public int Id { get; set; } 
        public decimal Total { get; set; } 
    }
 
            Order order1 = new Order(){Id = 1,Total = 10.00m}; 
            Order order2 = new Order(){Id = 2,Total = 20.00m}; 
            Order order3 = new Order(){Id = 3,Total = 30.00m};
 
            List<Customer> customers = new List<Customer>() 
            { 
                new Customer() 
                { 
                    Id = 1, 
                    Name = "张三", 
                    Orders = new List<Order>(){order1,order2} 
                }, 
                new Customer() 
                { 
                    Id = 2, 
                Name = "李四", 
                Orders = new List<Order>() { order3 } 
                } 
            };
 
 
            var result = from c in customers 
                from o in c.Orders 
                select new {c.Id, c.Name, o.Total};
 
            foreach (var item in result) 
            { 
                Console.WriteLine("客户编号:{0},姓名:{1},订单金额:{2}", item.Id,item.Name,item.Total); 
            }
 
            Console.ReadKey();    
 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:

 

  分组

□ group n by 条件 into g, g.Key就是分组标准和条件, g代表分组里所有元素的集合

            int[] numbers = { 5, 4, 1, 3, 9, 8, 6}; 
            var result = from n in numbers 
                group n by n%5 into g 
                select new {Remainder = g.Key, Numbers = g};
 
            foreach (var item in result) 
            { 
                Console.WriteLine("元素除以5的余数为:{0}",item.Remainder); 
                foreach (var n in item.Numbers) 
                { 
                    Console.WriteLine(n); 
                } 
            } 
            Console.ReadKey();

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:

 

  连接

□ 根据2个集合的相同部分连接

    public class Product 
    { 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public string Category { get; set; } 
    }
 
            List<Product> products = new List<Product>() 
            { 
                new Product(){Id=1,Name = "体恤衫",Category = "服饰"}, 
                new Product(){Id = 2,Name = "香水",Category = "化妆品"} 
            };
 
            string[] categoreis = new string[] 
            { 
                "服饰", 
                "化妆品", 
                "电子" 
            };
 
            var result = from c in categoreis 
                join p in products on c equals p.Category 
                select new {Category = c, p.Name}; 
            foreach (var item in result) 
            { 
                Console.WriteLine(item.Name + "属于:" + item.Category); 
            } 
            
            Console.ReadKey();   

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; } 

结果:

 

□ 把其中一个集合的所有元素放到一个别名集合中

            List<Product> products = new List<Product>() 
            { 
                new Product(){Id=1,Name = "体恤衫",Category = "服饰"}, 
                new Product(){Id = 2,Name = "香水",Category = "化妆品"} 
            };
 
            string[] categoreis = new string[] 
            { 
                "服饰", 
                "化妆品", 
                "电子" 
            };
 
            var result = from c in categoreis 
                join p in products on c equals p.Category into ps 
                select new {Category = c, Products = ps}; 
            foreach (var item in result) 
            { 
                Console.WriteLine("类别:{0}包括:",item.Category); 
                foreach (var p in item.Products) 
                { 
                    Console.WriteLine("      " + p.Name); 
                } 
            } 
            
            Console.ReadKey();

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

结果:

最新文章

  1. 从一个QQ群友那儿偷来的js图形 ^_^
  2. HDU 1166敌兵布阵+NOJv2 1025: Hkhv love spent money(线段树单点更新区间查询)
  3. bootstrap ace MVC
  4. 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
  5. linux下为php添加mongodb扩展
  6. JS获取IP、MAC和主机名的五种方法
  7. Hive 12、Hive优化
  8. DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)
  9. UVA 10282 (13.08.18)
  10. C# 利用SMTP异步发送邮件
  11. Struts2学习---基本配置,action,动态方法调用,action接收参数
  12. shell编程之运算符(3)
  13. 操作系统中 heap 和 stack 的区别
  14. 【拓扑排序】烦人的幻灯片(slides)
  15. git branch 分支管理
  16. 映众全新游戏内存条发布:单条16GB 最高4000MHz
  17. Spark记录-Scala函数与闭包
  18. tengine2.1.0RPM包制做 tengine-2.1.0.spec配置
  19. SpringBoot(十)-- 整合MyBatis
  20. HDU 6069 Counting Divisors(唯一分解定理+因子数)

热门文章

  1. 四B象限图
  2. sqlserver sp_spaceused用法
  3. LeetCode403. Frog Jump
  4. Zookeeper介绍及安装部署
  5. OpenCV 颜色空间转换参数CV_BGR2GRAY改变
  6. Spark(一)Spark简介
  7. Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据
  8. UIView中常见的方法汇总
  9. 关于mysql中storage_engine中 MYISAM 和 INNODB 的选择
  10. C++ shared_ptr