光脚丫学LINQ(004):分组数据
时间:2010-10-28 来源:光脚丫思考
使用 group 子句,您可以按指定的键分组结果。例如,您可以指定结果应按 City 分组,以便位于伦敦或巴黎的所有客户位于各自组中。在本例中,Customer.City是键。
NorthwindDataContext db = new NorthwindDataContext(); var AllCustomers = from Customer in db.Customers group Customer by Customer.City; foreach (var CustomerGroup in AllCustomers) { Console.WriteLine("---------------------"); Console.WriteLine("City : {0}", CustomerGroup.Key); foreach (var Customer in CustomerGroup) { Console.WriteLine("Customer Name : {0}", Customer.ContactName); } } NorthwindDataContext db = new NorthwindDataContext(); var AllCustomers = from Customer in db.Customers group Customer by Customer.City; foreach (var CustomerGroup in AllCustomers) { Console.WriteLine("---------------------"); Console.WriteLine("City : {0}", CustomerGroup.Key); foreach (var Customer in CustomerGroup) { Console.WriteLine("Customer Name : {0}", Customer.ContactName); } }
在使用 group 子句结束查询时,结果采用列表的列表形式。列表中的每个元素是一个具有 Key 成员及根据该键分组的元素列表的对象。在循环访问生成组序列的查询时,您必须使用嵌套的 foreach 循环。外部循环用于循环访问每个组,内部循环用于循环访问每个组的成员。
如果您必须引用组操作的结果,可以使用 into 关键字来创建可进一步查询的标识符。下面的查询只返回那些包含两个以上的客户的组:
NorthwindDataContext db = new NorthwindDataContext(); var AllCustomers = from Customer in db.Customers group Customer by Customer.City into CustomerGroup where CustomerGroup.Count() > 2 orderby CustomerGroup.Key select CustomerGroup;
相关阅读 更多 +