select的源码public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);

class Program
{
static void Main(string[] args)
{
    var customers = new[] {  
        new { CustomerID = 1, FirstName = "Orlando", LastName = "Gee",  
                CompanyName = "A Bike Store" },
        new { CustomerID = 2, FirstName = "Keith", LastName = "Harris",  
                CompanyName = "Bike World" },
        new { CustomerID = 3, FirstName = "Donna", LastName = "Carreras",  
                CompanyName = "A Bike Store" },
        new { CustomerID = 4, FirstName = "Janet", LastName = "Gates",  
                    CompanyName = "Fitness Hotel" },
        new { CustomerID = 5, FirstName = "Lucy", LastName = "Harrington",  
                CompanyName = "Grand Industries" },
        new { CustomerID = 6, FirstName = "David", LastName = "Liu",  
                CompanyName = "Bike World" },
        new { CustomerID = 7, FirstName = "Donald", LastName = "Blanton",  
                CompanyName = "Grand Industries" },
        new { CustomerID = 8, FirstName = "Jackie", LastName = "Blackwell",  
                CompanyName = "Fitness Hotel" },
        new { CustomerID = 9, FirstName = "Elsa", LastName = "Leavitt",  
                CompanyName = "Grand Industries" },
        new { CustomerID = 10, FirstName = "Eric", LastName = "Lang",  
                    CompanyName = "Distant Inn" }  
    };
    var addresses = new[] {  
        new { CompanyName = "A Bike Store", City = "New York", Country = "United States"},
        new { CompanyName = "Bike World", City = "Chicago", Country = "United States"},
        new { CompanyName = "Fitness Hotel", City = "Ottawa", Country = "Canada"},
        new { CompanyName = "Grand Industries", City = "London",Country = "United Kingdom"},
        new { CompanyName = "Distant Inn", City = "Tetbury", Country = "United Kingdom"}
    };

//查询数据
    IEnumerable<string> customerFirstNames = customers.Select(cust => cust.FirstName);
    //IEnumerable<string> customerFirstNames = from custs in customers select custs.FirstName;
    foreach (string name in customerFirstNames)
    {
        Console.WriteLine(name);
    }
    Console.WriteLine("\r\n");

IEnumerable<string> customerFullNames = customers.Select(cust => cust.FirstName + "  " + cust.LastName);
    //IEnumerable<string> customerFullNames = from custs in customers select custs.FirstName + "  " + custs.LastName;
    foreach (string name in customerFullNames)
    {
        Console.WriteLine(name);
    }

Console.WriteLine("\r\n");
    var customerNames = customers.Select(cust => new { FirstName = cust.FirstName, LastName = cust.LastName });
    //var customerNames = from custs in customers select new { FirstName = custs.FirstName, LastName = custs.LastName };
    foreach (var name in customerNames)
    {
        Console.WriteLine(name);
    }

//数据筛选
    Console.WriteLine("\r\n");
    IEnumerable<string> usCompanies = addresses.Where(addr => String.Equals(addr.Country, "United States"))
                                                .Select(usComp => usComp.CompanyName);
    //IEnumerable<string> usCompanies = from adr in addresses
    //                                  where String.Equals(adr.Country, "United States")
    //                                  select adr.CompanyName;
    foreach (string name in usCompanies)
    {
        Console.WriteLine(name);
    }

//数据排序
    Console.WriteLine("\r\n");
    IEnumerable<string> companyNames = addresses.OrderBy(addr => addr.CompanyName).Select(comp => comp.CompanyName);
    //IEnumerable<string> companyNames = from adr in addresses orderby adr.CompanyName select adr.CompanyName;
    foreach (string name in companyNames)
    {
        Console.WriteLine(name);
    }

Console.WriteLine("\r\n");
    //数据分组---分组之后变成二维数组
    var companiesGroupedByCountry = addresses.GroupBy(addrs => addrs.Country);
    //var companiesGroupedByCountry = from adr in addresses group adr by adr.Country;
    foreach (var companiesPerCountry in companiesGroupedByCountry)
    {
        Console.WriteLine("Country: {0}\t{1} companies",
                companiesPerCountry.Key, companiesPerCountry.Count());
        foreach (var companies in companiesPerCountry)
        {
            Console.WriteLine("\t{0}", companies.CompanyName);
        }
    }

//数据统计
    Console.WriteLine("\r\n");
    int numberOfCountries = addresses.Select(addr => addr.Country).Distinct().Count();
    //int numberOfCountries = (from adr in addresses select adr.Country).Distinct().Count();
    Console.WriteLine("Number of countries: {0}", numberOfCountries);

//联合查询--内联查询
    Console.WriteLine("\r\n");
    var citiesAndCustomers = customers.Select(c =>
        new { c.FirstName, c.LastName, c.CompanyName })
        .Join(addresses, custs => custs.CompanyName, addrs => addrs.CompanyName, (custs, addrs) => new { custs.FirstName, custs.LastName, addrs.Country });

//var citiesAndCustomers = from cuts in customers
    //                         join adr in addresses
    //                             on cuts.CompanyName equals adr.CompanyName
    //                         select new { cuts.FirstName, cuts.LastName, adr.Country };
    foreach (var row in citiesAndCustomers)
    {
        Console.WriteLine(row);
    }

Console.ReadKey();
    }
}
}

private static void Orderby()
        {
            int[] intAry1 = { 4, 3, 556, 34, 6, 2, 67 };
            var query1 = from var1 in intAry1
                         orderby var1 ascending
                         select var1;
            query1.ToList().ForEach(p => Console.Write(p + Environment.NewLine));
            var query2 = from var1 in intAry1
                         orderby var1 descending
                         select var1;
            query2.ToList().ForEach(p => Console.Write(p + Environment.NewLine));
            Console.WriteLine();
        }

private static void Join左外部连接()
        {
            int[] intAry1 = { 5, 15, 25, 30, 33, 40 };
            int[] intAry2 = { 5, 20, 30, 30, 50, 70, 80 };
            var query1 = from var1 in intAry1
                         join var2 in intAry2 on var1 equals var2 into var2Grp //左连接 右连接相反
                         from grp in var2Grp.DefaultIfEmpty()
                         select new { a = var1 != 0 ? var1 : 100, b = grp };
            query1.ToList().ForEach(p => Console.Write("{0}:{1}", p.a, p.b + Environment.NewLine));
            Console.WriteLine();
        }

private static void Join分组连接()
        {
            int[] intAry1 = { 5, 15, 25, 30, 33, 40 };
            int[] intAry2 = { 5, 20, 30, 30, 50, 70, 80 };
            var query1 = from var1 in intAry1
                         join var2 in intAry2 on var1 equals var2 into var2Grp
                         select new { a = var1, b = var2Grp };
            foreach (var item in query1)
            {
                Console.Write("{0}:", item.a);
                foreach (var o in item.b)
                {
                    Console.Write("{0} ", o);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }

private static void Join内部连接()
        {
            int[] intAry1 = { 5, 15, 25, 30, 33, 40 };
            int[] intAry2 = { 5, 20, 30, 30, 50, 70, 80 };
            var query1 = from var1 in intAry1
                         join var2 in intAry2 on var1 equals var2
                         select new { a = var1, b = var2 };
            query1.ToList().ForEach(p => Console.Write(p.a + Environment.NewLine));
            Console.WriteLine();
        }

最新文章

  1. Entity Framework Extended Library
  2. Apache Shiro系列四,概述 —— Shiro的架构
  3. Java 分页通用
  4. iOS UITextField的returnkey点击事件
  5. ASP.NET网站开发中的配置文件
  6. html,shtml和htm的区别
  7. masonry结合json 制作无限滚动的瀑布流
  8. 解决比较Oracle中CLOB字段问题
  9. java8 泛型声明 The diamond operator (&quot;&lt;&gt;&quot;) should be used
  10. 【深度学习】keras + tensorflow 实现猫和狗图像分类
  11. rails中link_to与button_to的一个功能差异
  12. tomcat指定运行jdk
  13. js动态改变css伪类样式
  14. 使用Navicat Premium对sqlserver 2008进行表、字段及用户权限的精细化管理
  15. 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理
  16. grad-cam 、cam 和热力图,基于keras的实现
  17. ViewBag对象的更改
  18. Jmeter-Maven-Plugin高级应用:Modifying Properties
  19. Yarn框架和工作流程研究
  20. phpstorm 2017版代码提示功能开启解决方案

热门文章

  1. 从CR线下活动学到的:如何组织一个小的线下活动
  2. SGU107——987654321 problem
  3. DevExpress GridControl GridView 导出到 Excel 类
  4. JavaWeb文件的上传与下载(1)
  5. 我这个IOS渣渣又来写随笔了
  6. Fatal error: Call to undefined function mysql_connect()
  7. 正尝试在 OS 载入程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内执行托管代码,这样做会导致应用程序挂起。
  8. JavaScript实现回到顶部
  9. HTML左边和右边是固定的宽度但是中间是自动的布局方式
  10. Spring安全资料整理列表