EF的连表查询Lambda表达式和linq语句(转)

var lst = from c in db.Blogs join p in db.Posts on c.Id equals p.BlogId where p.Id==1 select c;
var lst1 = db.Blogs.Join(db.Posts.Where(p=>p.Id==1), b=> b.Id, p=> p.BlogId, (b, p) => new {b});

 public class Blog
 {
    public int Id { get; set; }
    public string Title { get; set; }
 }

 public class Post
 {
    public int Id { get; set; }
    public string Title { get; set; }
    public int BlogId { get; set; }
 }

        public List<CommentsViewModel> GetCommentsByPid(int pid, int uid)
        {
            var query = from a in db.Photos
                        join b in db.Comments on a.PID equals b.PID
                        join c in db.Users on b.UID equals c.UID
                        where a.PID == pid
                        select new CommentsViewModel { Id = b.ID, Author = c.UserName, Comment = b.Content, UserAvatar = c.HeadPic, CanDelete = uid == b.UID ? true : false, CanReplay = true, TempDate = b.CreateTime, ParentId = b.ParentId };
            var ret = query.ToList();
            return ret;

       //或者
            var data = db.Photos.
                    Join(db.Comments, p => p.PID, c => c.PID,
                    (p, c) => new { p, c }).
                    Join(db.Users, n => n.c.UID, u => u.UID, (n, u) => new { n, u })
                    .Where(m => m.n.p.PID == pid)
                    .Select(m => new CommentsViewModel
                    {
                        Id = m.n.c.ID,
                        Author = m.u.UserName,
                        Comment =m.n.c.Content,
                    });
            return data.ToList();
        }

原文地址:https://www.cnblogs.com/LiZhongZhongY/p/11074008.html

时间: 2024-10-25 20:53:57

EF的连表查询Lambda表达式和linq语句(转)的相关文章

EF的连表查询Lambda表达式

var lst = from c in db.Blogs join p in db.Posts on c.Id equals p.BlogId where p.Id==1 select c; var lst1 = db.Blogs.Join(db.Posts.Where(p=>p.Id==1), b=> b.Id, p=> p.BlogId, (b, p) => new {b}); public class Blog { public int Id { get; set; } pu

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re

entity framework 新手入门篇(1.5)-lambda表达式与linq

在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以lambda表达式为例: x=>x+1;就是一个完整的lambda表达式. 其等同于一个匿名的方法: int anonymous(int x) { return x+1; } 考虑一下这个方法中最重要的部分,也就两个部分:传入的参数,返回的参数. 返回值类型,参数类型都是可以进行推断的,就像C#中的VA

Lambda表达式转SQL语句类库

/* 作者:道法自然   * 个人邮件:[email protected] * 2014-10-1 */ Lambda表达式转SQL语句类库源码下载:http://download.csdn.net/detail/xftyyyyb/8044085一.可以达到的功能 本功能类库主要提供给代码中使用Lambda表达式,后需转成SQL的条件语句这一需求. 二.不能做的 1.本类库不能解析Linq语句: 2.不能解析SQL中的Select部分: 三.案例: 1.以Northwind数据库Customer

点标记(lambda表达式+linq查询标记符)与linq语句(查询表达式)

什么是Linq表达式?什么是Lambda表达式? 参照:https://www.cnblogs.com/zhaopei/p/5746414.html 原文地址:https://www.cnblogs.com/vickylinj/p/10923560.html

树形结构表查询,只用一条SQL语句查询所有父级ID解决办法

在树形结构表查询中用得最多的就是查询指定分类的所有下级分类,这个性能比较好的解决方案是为分类加一个编码(路径)把父级的ID都拼接上,最后通过like 'x%'就能把所有下级分类select出来.但是有时也会遇到反过来,找出指定分类的所有上级分类,这个情况尤其在分销或类传销的系统中最常见,因为他们分成都是上级分成,所以要找出指定人的上级集合. 下面分享一下我的解决方案(只用一条SQL语句.不用存储过程.函数): 有下面所在的新闻分类表. ParentID为父级的ID. 下面要找出ID为52的所有上

C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法

https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) var result = ds.AsEnumerable().GroupBy(s => new{Year = s.Field<int>("Year"), Month = s.Field<int>("Month"), Day = s.Fie

Lambda表达式和查询表达式(1)基本概念

Lambda表达式也是一种匿名函数(anonymous function),比匿名方法具有更加简洁的表示形式.它可以包含表达式和语句,并且适用于创建委托和事件. 查询表达式: 是一种使用查询语法表示的表达式,它可以从一个或多个给定的数据源中检索数据,并制定检索结果的表现形式. Lambda表达式:  由输入参数.Lambda运算符和表达式(或语句块)构成. 它的语法形式如下: (input parameters) => empression; : input parameters : 表示输入参

SQL、LINQ和Lambda表达式

首先说说这三者完全是三种不同的东西,SQL是结构化查询语言(Structured Query Language)简称,这大家再熟悉不过了,下面主要介绍LINQ和Lambda表达式的基本概念以及同一查询这三者的不同实现. 简单介绍 LINQ(Language Integrate Query)是语言集成查询他在对象和数据之间建立一种对应的关系,可以使用访问内存对象的方式查询数据集合.LINQ查询是C#中的一种语言构造.因此开发人员可以再C#代码汇总嵌套类似于SQL语句的查询表达式,从而实现数据查询的