linq to sql多表基础描述
创始人
2024-06-07 10:21:13
0

本文主要阐述linq to sql多表关联与动态条件查询,虽然好多人对linq很不熟悉,但是本文作者简言较简单,还是很容易理解的。

在去年的有接触过linq,也小试了一刀.但仅仅是简单的from并没有深入去揣摩.这次正好用MVC开发这套系统.所以使用linq 是必须的.

之前我也有说过linq的编写方式看起来很拉风,但他并不是很么的***,有利肯定有弊.要不microsoft推出linq这么长时间了.也没见市场上很热门.至今在我看来.用的人还是很少.这次在开发的过程中.最让我抓狂的就是linq to sql多表关联与动态条件查询.

虽然网上有很多资料是linq to sql多表关系当然也有动态条件查询的.但是并没有找到我想要的答案.与是只能靠自己摸索了.下面就是我要实现的结果,linq to sql多表关联.INNER JOIN + LEFT JOIN

  1. var q =  
  2.   (from ar in db.Articles  
  3.    join c in db.Categories on ar.ParentId  
  4.    equals c.Id  
  5.    join sc in db.Categories on ar.SubId equals sc.Id into scate  
  6.    from sc in scate.DefaultIfEmpty()  
  7.    where ar.IsPrivate == false  
  8.    orderby ar.CreateTime descending   
  9.    __select new  
  10.     {  
  11.        ararticle = ar,  
  12.        pcate = c,  
  13.        scscate = sc  
  14.     }).Take(3); 

linq to sql多表动态条件查询:

  1. Expression> lambda = ar => (1==1);  
  2.             if (id != null)  
  3.                 lambda = (ar => ar.Id == id);   
  4.             var article = db.Articles.OrderByDescending
  5. (a => a.CreateTime).Where(lambda);  
  6.      return View(article);  

linq to sql多表,如果你要根据条件不同显示相应的数据的话,只要在q对像后追加Where()就OK:

  1. int Record__count = q.Count(); //得到记录数     
  2.            int page = PagerHelper.GetCurrentPage();     
  3.            int SkipIndex = (page-1)__ * 5;  
  4.            var q = (from ar in db.Articles  
  5.     join c in db.Categories on ar.ParentId  
  6.         equals c.Id  
  7.     join sc in db.Categories on ar.SubId equals sc.Id into scate  
  8.     from sc in scate.DefaultIfEmpty()  
  9.     where ar.IsPrivate == false  
  10.     orderby ar.CreateTime descending  
  11.     __select new  
  12.     {  
  13.         ararticle = ar,  
  14.         pcate = c,  
  15.         scscate = sc  
  16.     });.Skip(SkipIndex).Take(5); 

以上就是对linq to sql多表的详细阐述。

【编辑推荐】

  1. 深入浅出 LINQ表达式
  2. LINQ基础学习之LINQ to XML
  3. 学习心得LINQ to XML
  4. 浅析LINQ开发技术之LINQ to XML
  5. 详细阐述linq动态排序

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...