zoukankan      html  css  js  c++  java
  • Linq:Grouping Operators

     1        [Category("Grouping Operators")]
     2             [Description("This sample uses group by to partition a list of numbers by " +
     3                         "their remainder when divided by 5.")]
     4             public void DataSetLinq40()
     5             {
     6 
     7                 var numbers = testDS.Tables["Numbers"].AsEnumerable();//testDS DataSet
     8                 foreach (var n in numbers)
     9                 {
    10                     Console.Write(n.Field<int>("number")+",");
    11                 }
    12                 Console.WriteLine();
    13                 var numberGroups =
    14                     from n in numbers
    15                     group n by n.Field<int>("number") % 5 into g
    16                     select new { Remainder = g.Key, Numbers = g };
    17 
    18                 foreach (var g in numberGroups)
    19                 {
    20                     Console.WriteLine("Numbers with a remainder of {0} when divided by 5:", g.Remainder);
    21                     foreach (var n in g.Numbers)
    22                     {
    23                         Console.WriteLine(n.Field<int>("number"));
    24                     }
    25                 }
    26                 Console.ReadLine();
    27             }

    运行结果(按照数字求余5的值分组):

     1             [Category("Grouping Operators")]
     2             [Description("This sample uses group by to partition a list of words by " +
     3                          "their first letter.")]
     4             public void DataSetLinq41()
     5             {
     6 
     7                 var words4 = testDS.Tables["Words4"].AsEnumerable();
     8                 foreach (var g in words4)
     9                 {
    10                     Console.Write(g.Field<string>("word")+",");
    11                 }
    12                 Console.WriteLine();
    13                 var wordGroups =
    14                     from w in words4
    15                     group w by w.Field<string>("word")[0] into g
    16                     select new { FirstLetter = g.Key, Words = g };
    17 
    18                 foreach (var g in wordGroups)
    19                 {
    20                     Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter);
    21                     foreach (var w in g.Words)
    22                     {
    23                         Console.WriteLine(w.Field<string>("word"));
    24                     }
    25                 }
    26                 Console.ReadLine();
    27             }

    运行结果(按照首字母分组):

     1             [Category("Grouping Operators")]
     2             [Description("This sample uses group by to partition a list of products by category.")]
     3             public void DataSetLinq42()
     4             {
     5 
     6                 var products = testDS.Tables["Products"].AsEnumerable();
     7 
     8                 var productGroups =
     9                     from p in products
    10                     group p by p.Field<string>("Category") into g
    11                     select new { Category = g.Key, Products = g };
    12 
    13                 foreach (var g in productGroups)
    14                 {
    15                     Console.WriteLine("Category: {0}", g.Category);
    16                     foreach (var w in g.Products)
    17                     {
    18                         Console.WriteLine("	" + w.Field<string>("ProductName"));
    19                     }
    20                 }
    21                 Console.ReadLine();
    22             }

    运行结果(按照产品类别分组):

     1             [Category("Grouping Operators")]
     2             [Description("This sample uses group by to partition a list of each customer's orders, " +
     3                          "first by year, and then by month.")]
     4             public void DataSetLinq43()
     5             {
     6 
     7                 var customers = testDS.Tables["Customers"].AsEnumerable();
     8 
     9                 var customerOrderGroups =
    10                     from c in customers
    11                     select
    12                         new
    13                         {
    14                             CompanyName = c.Field<string>("CompanyName"),
    15                             YearGroups =
    16                                 from o in c.GetChildRows("CustomersOrders")
    17                                 group o by o.Field<DateTime>("OrderDate").Year into yg
    18                                 select
    19                                     new
    20                                     {
    21                                         Year = yg.Key,
    22                                         MonthGroups =
    23                                             from o in yg
    24                                             group o by o.Field<DateTime>("OrderDate").Month into mg
    25                                             select new { Month = mg.Key, Orders = mg }
    26                                     }
    27                         };
    28 
    29                 foreach (var cog in customerOrderGroups)
    30                 {
    31                     Console.WriteLine("CompanyName= {0}", cog.CompanyName);
    32                     foreach (var yg in cog.YearGroups)
    33                     {
    34                         Console.WriteLine("	 Year= {0}", yg.Year);
    35                         foreach (var mg in yg.MonthGroups)
    36                         {
    37                             Console.WriteLine("		 Month= {0}", mg.Month);
    38                             foreach (var order in mg.Orders)
    39                             {
    40                                 Console.WriteLine("			 OrderID= {0} ", order.Field<int>("OrderID"));
    41                                 Console.WriteLine("			 OrderDate= {0} ", order.Field<DateTime>("OrderDate"));
    42                             }
    43                         }
    44                     }
    45                 }
    46                 Console.ReadLine();
    47             }

    DataTable:

    运行结果(对每个客户的订单按年再按月分组):

     1 [Category("Grouping Operators")]
     2             [Description("This sample uses GroupBy to partition trimmed elements of an array using " +
     3                          "a custom comparer that matches words that are anagrams of each other.")]
     4             public void DataSetLinq44()
     5             {
     6 
     7                 var anagrams = testDS.Tables["Anagrams"].AsEnumerable();
     8 
     9                 var orderGroups = anagrams.GroupBy(w => w.Field<string>("anagram").Trim(), new AnagramEqualityComparer());
    10 
    11                 foreach (var g in orderGroups)
    12                 {
    13                     Console.WriteLine("Key: {0}", g.Key);
    14                     foreach (var w in g)
    15                     {
    16                         Console.WriteLine("	" + w.Field<string>("anagram"));
    17                     }
    18                 }
    19             }
    20 
    21             [Category("Grouping Operators")]
    22             [Description("This sample uses GroupBy to partition trimmed elements of an array using " +
    23                          "a custom comparer that matches words that are anagrams of each other, " +
    24                          "and then converts the results to uppercase.")]
    25             public void DataSetLinq45()
    26             {
    27 
    28                 var anagrams = testDS.Tables["Anagrams"].AsEnumerable();
    29 
    30                 var orderGroups = anagrams.GroupBy(
    31                     w => w.Field<string>("anagram").Trim(),
    32                     a => a.Field<string>("anagram").ToUpper(),
    33                     new AnagramEqualityComparer()
    34                     );
    35 
    36                 foreach (var g in orderGroups)
    37                 {
    38                     Console.WriteLine("Key: {0}", g.Key);
    39                     foreach (var w in g)
    40                     {
    41                         Console.WriteLine("	" + w);
    42                     }
    43                 }
    44             }

    内容源自:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

  • 相关阅读:
    ios中解析json对象基类
    iOS archive(归档)的总结
    ios block一定会犯的几个错误
    iOS求职之C语言面试题
    iOS求职之OC面试题
    iOS开发之17个常用代码整理
    91平台iOS接入demo
    IOS 启动画面和图标设置(适配IOS7 and Xcode5)
    iOS - 切换图片/clip subview/iCarousel
    jemter多种方式查看结果树及正则的使用
  • 原文地址:https://www.cnblogs.com/yf2011/p/3371666.html
Copyright © 2011-2022 走看看