[Category("Grouping Operators")]
[Description("This sample uses group by to partition a list of numbers by " +
"their remainder when divided by 5.")]
public void DataSetLinq40()
{ var numbers = testDS.Tables["Numbers"].AsEnumerable();//testDS DataSet
foreach (var n in numbers)
{
Console.Write(n.Field<int>("number")+",");
}
Console.WriteLine();
var numberGroups =
from n in numbers
group n by n.Field<int>("number") % into g
select new { Remainder = g.Key, Numbers = g }; foreach (var g in numberGroups)
{
Console.WriteLine("Numbers with a remainder of {0} when divided by 5:", g.Remainder);
foreach (var n in g.Numbers)
{
Console.WriteLine(n.Field<int>("number"));
}
}
Console.ReadLine();
}

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

             [Category("Grouping Operators")]
[Description("This sample uses group by to partition a list of words by " +
"their first letter.")]
public void DataSetLinq41()
{ var words4 = testDS.Tables["Words4"].AsEnumerable();
foreach (var g in words4)
{
Console.Write(g.Field<string>("word")+",");
}
Console.WriteLine();
var wordGroups =
from w in words4
group w by w.Field<string>("word")[] into g
select new { FirstLetter = g.Key, Words = g }; foreach (var g in wordGroups)
{
Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter);
foreach (var w in g.Words)
{
Console.WriteLine(w.Field<string>("word"));
}
}
Console.ReadLine();
}

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

             [Category("Grouping Operators")]
[Description("This sample uses group by to partition a list of products by category.")]
public void DataSetLinq42()
{ var products = testDS.Tables["Products"].AsEnumerable(); var productGroups =
from p in products
group p by p.Field<string>("Category") into g
select new { Category = g.Key, Products = g }; foreach (var g in productGroups)
{
Console.WriteLine("Category: {0}", g.Category);
foreach (var w in g.Products)
{
Console.WriteLine("\t" + w.Field<string>("ProductName"));
}
}
Console.ReadLine();
}

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

             [Category("Grouping Operators")]
[Description("This sample uses group by to partition a list of each customer's orders, " +
"first by year, and then by month.")]
public void DataSetLinq43()
{ var customers = testDS.Tables["Customers"].AsEnumerable(); var customerOrderGroups =
from c in customers
select
new
{
CompanyName = c.Field<string>("CompanyName"),
YearGroups =
from o in c.GetChildRows("CustomersOrders")
group o by o.Field<DateTime>("OrderDate").Year into yg
select
new
{
Year = yg.Key,
MonthGroups =
from o in yg
group o by o.Field<DateTime>("OrderDate").Month into mg
select new { Month = mg.Key, Orders = mg }
}
}; foreach (var cog in customerOrderGroups)
{
Console.WriteLine("CompanyName= {0}", cog.CompanyName);
foreach (var yg in cog.YearGroups)
{
Console.WriteLine("\t Year= {0}", yg.Year);
foreach (var mg in yg.MonthGroups)
{
Console.WriteLine("\t\t Month= {0}", mg.Month);
foreach (var order in mg.Orders)
{
Console.WriteLine("\t\t\t OrderID= {0} ", order.Field<int>("OrderID"));
Console.WriteLine("\t\t\t OrderDate= {0} ", order.Field<DateTime>("OrderDate"));
}
}
}
}
Console.ReadLine();
}

DataTable:

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

 [Category("Grouping Operators")]
[Description("This sample uses GroupBy to partition trimmed elements of an array using " +
"a custom comparer that matches words that are anagrams of each other.")]
public void DataSetLinq44()
{ var anagrams = testDS.Tables["Anagrams"].AsEnumerable(); var orderGroups = anagrams.GroupBy(w => w.Field<string>("anagram").Trim(), new AnagramEqualityComparer()); foreach (var g in orderGroups)
{
Console.WriteLine("Key: {0}", g.Key);
foreach (var w in g)
{
Console.WriteLine("\t" + w.Field<string>("anagram"));
}
}
} [Category("Grouping Operators")]
[Description("This sample uses GroupBy to partition trimmed elements of an array using " +
"a custom comparer that matches words that are anagrams of each other, " +
"and then converts the results to uppercase.")]
public void DataSetLinq45()
{ var anagrams = testDS.Tables["Anagrams"].AsEnumerable(); var orderGroups = anagrams.GroupBy(
w => w.Field<string>("anagram").Trim(),
a => a.Field<string>("anagram").ToUpper(),
new AnagramEqualityComparer()
); foreach (var g in orderGroups)
{
Console.WriteLine("Key: {0}", g.Key);
foreach (var w in g)
{
Console.WriteLine("\t" + w);
}
}
}

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

Linq:Grouping Operators的更多相关文章

  1. Linq编程101例

    原文地址:101 LINQ Samples in C# Part1 - Restriction Operators Part2 - Projection Operators Part3 - Parti ...

  2. 101个LINQ示例,包含几乎全部操作

    Restriction Operators Where - Simple public void Linq1() { , , , , , , , , , }; var lowNums = from n ...

  3. LINQ 学习路程 -- 查询操作 GroupBy ToLookUp

    Grouping Operators Description GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象 To ...

  4. Flume interceptor 使用注意事项

    1. 在使用 Regex Filtering Interceptor的时候一个属性是excludeEvents 当它的值为true 的时候,过滤掉匹配到当前正则表达式的一行 当它的值为false的时候 ...

  5. 【翻译】Flume 1.8.0 User Guide(用户指南) Processors

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  6. tfs二次开发-利用tfs api做查询

    参考地址:https://msdn.microsoft.com/en-us/library/bb130306(v=vs.120).aspx You can query for bugs, tasks, ...

  7. Threading in C# 5

    Part 5: Parallel Programming In this section, we cover the multithreading APIs new to Framework 4.0 ...

  8. Rx (Reactive Extensions)

    The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using ...

  9. matlab 正则表达式

    regexprep Replace text using regular expression collapse all in page Syntax newStr = regexprep(str,e ...

随机推荐

  1. Spark机器学习1·编程入门(scala/java/python)

    Spark安装目录 /Users/erichan/Garden/spark-1.4.0-bin-hadoop2.6 基本测试 ./bin/run-example org.apache.spark.ex ...

  2. 【hihocoder】01背包

    描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要ne ...

  3. 【Head First Servlets and JSP】笔记

    1.谈到服务器的时候,可能是指物理主机(硬件),也可能是指Web服务应用(软件). 2.谈到客户的时候,通常指人类用户,或者是浏览器应用,或者两者都包括,浏览器应用做些什么?发送请求.解释HTML和呈 ...

  4. Python-GUI编程-PyQt5

    Python-GUI编程-PyQt5 1. GUI编程是什么? GUI 全称为: Graphical User Interface;简称GUI翻译为中文为: 图形化用户接口简单理解就是:- 使用Pyt ...

  5. 关于YII2中编辑页面全局变量冲突问题

    今天做一编辑页面时被一个很小的问题困了许久.由于在YII2框架里高度集成了bootstrp框架,在做一个编辑的页面时出现了一个自定义的功能,自定义的字段非数据库表里的字段,所以需要在模型里单独声明一个 ...

  6. 学习mybatis时出现了java.io.IOException: Could not find resource EmployeeMapper.xml

    使用mybatis时出现了Could not find resource EmployeeMapper.xml和Could not find resource mybatis-config.xml两种 ...

  7. yii2:如果获取config/web.php配置的值?

    return [ 'version' => '1.0.1', 'category-map' => [ 1 => '样式1', 2 => '样式2', 3 => '样式3' ...

  8. 一般处理程序ashx中用session存储数据

    如果要使用session的话,在handler的代码中添加System.Web.SessionState的引用,并让这个handler继承IRequiresSessionState接口,一定要继承这个 ...

  9. 小米手机调试出现DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs

    小米手机就是这样子,权限什么的总是做的比较严格,去开发者选项里面找答案,看了下很多都是以前的,在最底下发现了一个选项“启用MIUI优化”,其实一般手机的开发者选项里面是不会有这个选项的.关掉该选项,重 ...

  10. 27-THREE.JS 平面

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...