如何将此 SQL 转换为 ASP.NET MVC 的 LINQ?

How to convert this SQL to LINQ of ASP.NET MVC?

我有这个SQL声明:

select 
    table1.DIRECTORATE_ID, 
    table2.PLA_NAME + '//' + table1.ENGLISH_DIRECTORATE_CODE as EngCode
from table1
inner join table2 on table1.PLA_ID = table2.PLA_ID order by EngCode

我需要在我的 EF 代码中执行与 List<> 相同类型的查询。像这样:

var query = (from t1 table1.DIRECTORATE_ID, table2.PLA_NAME + '//' + table1.ENGLISH_DIRECTORATE_CODE as EngCode
             from table1
             inner join table2 on table1.PLA_ID = table2.PLA_ID order by EngCode)
            .ToList();

您的 from 子句中有列引用。在 SQL 中,顺序是(在此特定示例中)

  1. select
  2. 来自
  3. 加入
  4. 订购依据

在 LINQ 中,顺序是

  1. 来自
  2. 加入
  3. 排序方式
  4. select

你可以在查询语法中这样写

var query = from t1 in table1
            join t2 in table2 on t1.PLA_ID equals t2.PLA_ID
            let EngCode = t2.PLA_NAME + "//" + t1.ENGLISH_DIRECTORATE_CODE
            orderby EngCode
            select new 
            { 
                t1.DIRECTORATE_ID, 
                EngCode
            }

var data = query.ToList();

或使用扩展方法

var data = table1
    .Join(
        table2,
        t1 => t1.PLA_ID,
        t2 => t2.PLA_ID,
        (t1, t2) => new 
        { 
            t1.DIRECTORATE_ID, 
            EngCode = t2.PLA_NAME + "//" + t1.ENGLISH_DIRECTORATE_CODE 
        })
    .OrderBy(x => x.EngCode)
    .ToList();