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

转载来源

https://www.cnblogs.com/tinya/p/4623503.html

复制代码
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();
        }
复制代码

 

posted @   hao_1234_1234  阅读(377)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示