首先我们还是先建立一个person.cs类

public class person
{
  public string name
  { get; set; }
  public int age
  { get; set; }
  public string sex
  { get; set; }
}

接下来我们往这个person类添加数据:

List plist1 = new List();
  plist1.Add(new person { name = "cxx1", age = , sex = "男" });
  plist1.Add(new person { name = "www.baidu.com", age = , sex = "男" });
  plist1.Add(new person { name = "www.52mvc.com", age = , sex = "男" });
  List plist2 = new List();
  plist2.Add(new person { name = "cxx1", age = , sex = "男" });
  plist2.Add(new person { name = "cxx2", age = , sex = "男" });
  plist2.Add(new person { name = "cxx4", age = , sex = "男" });
  plist2.Add(new person { name = "cxx5", age = , sex = "男" });
  // asp.net
  var query = from person p in plist1
  join person per in plist2
  on p.name equals per.name
  select new
  {
  名称=p.name,
  性别=p.sex,
  年龄=p.age
  };
  gd2.DataSource = query;
  gd2.DataBind();

返回的结果是:

  备注:这个方法是要查找出 plist1 与 plist2 之中,name名称有相同记录的数据。
  

接下来我们来看看sql中的左连接left join 在linq中如何实现
  还是先来创建两个cs 类。

///
/// 手机列表
///
public class MobileStore
{
  public string mobId
  { set; get; }
  public string mobName
  { set; get; }
}
/// 手机销售表
  ///
  public class MobileSale
  {
  public string Sid
  { set; get; }
  public string mobId
  { set; get; }
  public string mobName
  { set; get; }
  public string price
  { set; get; }
  }
  List listStore = new List();
  listStore.Add(new MobileStore { mobId = "", mobName = "N86" });
  listStore.Add(new MobileStore { mobId = "", mobName = "N82" });
  listStore.Add(new MobileStore { mobId = "", mobName = "N81" });
  listStore.Add(new MobileStore { mobId = "", mobName = "N95" });
  listStore.Add(new MobileStore { mobId = "", mobName = "N85" });
  listStore.Add(new MobileStore { mobId = "", mobName = "N97" });
  List listSale = new List();
  listSale.Add(new MobileSale { Sid="" ,mobId="",mobName="N86",price=""});
  listSale.Add(new MobileSale { Sid="", mobId = "", mobName = "N82",price="" });
  listSale.Add(new MobileSale { Sid = "", mobId = "", mobName = "N81", price = "" });
  var query = from MobileStore m in listStore
  join MobileSale sale in listSale
  on m.mobId equals sale.mobId into joinm
  from j in joinm.DefaultIfEmpty()
  select new
  {
  ID = m.mobId,
  名称 = m.mobName,
  价格 = j == null ? "暂无数据" : j.price,
  };
  gd.DataSource = query;
  gd.DataBind();

asp.net Linq 实现分组查询的更多相关文章

  1. linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定

    LINQ分组取出第一条数据 Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: I ...

  2. LINQ to Entities 查询语法

    转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET  ...

  3. MVC项目实践,在三层架构下实现SportsStore-09,ASP.NET MVC调用ASP.NET Web API的查询服务

    ASP.NET Web API和WCF都体现了REST软件架构风格.在REST中,把一切数据视为资源,所以也是一种面向资源的架构风格.所有的资源都可以通过URI来唯一标识,通过对资源的HTTP操作(G ...

  4. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  5. LinQ to SQL 查询

    LINQ to SQL 是将对象关系映射到.NET框架中的一种实现.它可以将关系数据库映射为.NET Framework中的一些类. 然后,开发人员就可以通过使用 LINQ to SQL对数据库中的数 ...

  6. C# - LINQ 语言集成查询

    LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq ...

  7. C#编程(六十二)---------LINQ标准的查询操作符

    LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作”类型”进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. ...

  8. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  9. MySQL时间分组查询

    表TESTER 字段:id -- INT    date  -- TIMESTAMP 1.如何按年.月.日分组查询? select DATE_FORMAT(date,'%Y-%m-%d') time, ...

随机推荐

  1. Linux下动态调整LVM文件系统大小

    LINUX下可以通过LVM动态调整一个已挂载的文件系统大小 LV可以根据需求增大或减小,但是LV改变大小以后,在LV中的文件系统也需要相应的改变大小.这个概念非常重要,如果没有相应的调整LV中文件系统 ...

  2. [转]在 Mac OS X 终端里使用 Solarized 配色方案

    相信长期浸泡在终端和代码的小伙伴们都有一套自己喜爱的配色方案.以前一直在用简单.适合阅读的 Terminal.app 配色方案,换到 MacBook Pro with Retina display 后 ...

  3. 使用GruntJS链接与压缩多个JavaScript文件

    使用GruntJS链接与压缩多个JavaScript文件 自己写了个简单的HTML5 Canvas的图表库,可以支持饼图,折线图,散点图,盒子图 柱状图,同时支持鼠标提示,绘制过程动画效果等.最终我想 ...

  4. NOIP-2003 加分二叉树

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...

  5. PHP开发APP接口(一)

    php以json或者xml 形式返回给app.明白这点就很好说了,就是把数据包装成json或者xml,返回给APP 定义抽象APP基类: <?php /** * 定义API抽象类 */ abst ...

  6. java nio之Buffer(一)

    Buffer是一个包装了基本数据元素数组的对象,它以及它的子类定义了一系列API用于处理数据缓存. 一.属性 Buffer有四个基本属性: 1.capacity  容量,buffer能够容纳的最大元素 ...

  7. angular js 表单验证

    <!doctype html> <html ng-app="myapp"> <head> <meta charset="UTF- ...

  8. 在地图上添加POI

    使用Tangram的Marker, 可以在地图上做各种标记, 效果图: Tangram是通过Marker在地图上添加标记的,Marker分Point, Polyline和Polygon三种, 分别对应 ...

  9. C# 创建新RTF文件

    这个和WINDOWS创建RTF文件一样 public void CreateRtfFile(string RtfFileName) { RichTextBox richTextBox1 = new R ...

  10. Android(java)学习笔记190:Eclipse中的控制台不停报错Can't bind to local 8700 for debugger

    [DDMS] Can't bind to local 8600 for debugger 改成 Under Window -> Preferences -> Android -> D ...