分组查询和SQL语句中的带有“group”关键字的查询功能类似,它能够把查询结果按照关键字进行分组。下面的实例代码使用LINQ to SQL查询LinqDB数据库的Product表中的数据,并按照UserID列的值对查询结果进行分组和排序。具体步骤如下。
(1)创建LinqDBDataContext类的实例db。
(2)使用LINQ查询表达式查询Product表中的数据(商品),并在查询中使用group子句对查询结果按照UserID列的值进行分组,并按照组的关键字进行升序排序。最后,使用select子句查询商品名称(Product表的Name列的值)和用户名称(UserInfo表的Username列的值,由子查询获取)。查询界保存为result变量。
(3)把result变量设置为GridView控件gvData的数据源,并绑定该控件的数据,显示查询结果。
private void ShowData()
{ ///创建LinqDB数据库的数据上下文的实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
///获取所有商品及其所属用户
var result = from p in db.Product
group p by p.UserID into g
orderby g.Key
select new
{ ///获取商品名称和用户名称
ProdcutName = g.First().Name,
Username = (from u in db.UserInfo
where u.ID == g.Key
select u).First().Username
};
///绑定控件数据,并显示数据
gvData.DataSource = result;
gvData.DataBind();
}
Sample_08项目中的GroupQuery.aspx页面测试了上述实例代码(ShowData()函数),测试结果如图所示。