简体   繁体   English

如何在实体框架中使用 lambda 表达式进行此查询?

[英]How to make this query with lambda expression in Entity Framework?

This is my SQL query:这是我的 SQL 查询:

select 
    m.Name, s.Time, t.TheaterNumber
from   
    Movies m
join 
    MovieSeanceTheaters mst on mst.MovieId = m.MovieID
join 
    Theaters t on t.ID = mst.TheaterId
join 
    Seances s on mst.SeanceId = s.ID

This is my attempt at a Linq query:这是我对 Linq 查询的尝试:

var result = (from m in _context.Movies
              join mst in _context.MovieSeanceTheaters on m.ID equals mst.MovieId
              join t in _context.Theaters on mst.TheaterId equals t.ID
              join s in _context.Seances on mst.TheaterId equals s.ID
              select new { Film = m.Name, Salon = t.Name, Seans = s.Time }
             ).ToList();

I made this attempt, but I want to make with lambda for instance:我做了这个尝试,但我想用 lambda 例如:

var result = movieManager.GetAll().Where(x => x.MovieSeanceTheaters).... 

I couldn't do that.我不能那样做。

If I understand you correctly, you want to rewrite your query from query syntax to method syntax?如果我对您的理解正确,您想将查询从查询语法重写为方法语法吗?

Here we are!我们到了!

var result = _context.Movies
    .Join(_context.MovieSeanceTheaters,
        m => m.MovieID,
        mst => mst.MovieID,
        (m, mst) => new
        {
            m = m,
            mst = mst
        })
    .Join(_context.Theaters,
        temp0 => temp0.mst.TheaterID,
        t => t.ID,
        (temp0, t) =>
            new
            {
                temp0 = temp0,
                t = t
            })
    .Join(_context.Seances,
        temp1 => temp1.temp0.mst.TheaterID,
        s => s.ID,
        (temp1, s) =>
            new
            {
                Film = temp1.temp0.m.Name,
                Salon = temp1.t.TheaterNumber,
                Seans = s.Time
            });

Looks ugly, doesn't it?看起来很丑,不是吗?
Most often, the method syntax is more compact and convenient.大多数情况下,方法语法更加紧凑和方便。 But in this case, leave it as is.但在这种情况下,请保持原样。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何&#39;不&#39;实体框架的lambda表达式 - how to 'not' a lambda expression for entity framework 如何使用带有Lambda表达式的实体框架在mysql查询下编写代码? - How to write below mysql query using Entity Framework with Lambda expression? 如何将此 SQL 查询转换为实体框架 lambda 表达式? - How to turn this SQL query into a Entity Framework lambda expression? 实体框架 - 使用lambda表达式编写查询 - Entity Framework - writing query using lambda expression 没有Lambda表达式的实体框架查询 - Entity framework query without lambda expression 将此SQL查询写入Entity Framework lambda表达式或其他方式 - Write this SQL query to Entity Framework lambda expression or other way 如何优化此lambda表达式以使用包含单词列表的每一行的实体框架进行查询? - How can I optimise this lambda expression to query using entity framework for each row that contains a list of words? 实体框架-Lambda表达式中的NotSupportedException - Entity framework - NotSupportedException in lambda expression 如何在实体框架中进行此查询? - how to make this query in entity framework? 如何将 Expression&lt;&gt; 合并到实体框架查询中? - How to incorporate an Expression<> into an Entity Framework query?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM