我的问题是什么

本文关键字:是什么 问题是 问题 我的 | 更新日期: 2023-09-27 18:19:27

我有一个实体框架查询,我想将其更改为Linq,我的问题是:

(from l in db.PageLayouts
 where l.ZoneName == zone.Name
 join p in db.PageLayouts
 on l.PageId equals p.PageId
 where p.ZoneName == PageName
 orderby l.AppearanceOrder
 select l).ToList();

有人帮我把它改一下吗?

我的问题是什么

您的查询已经是Linq了。我猜在这里,但我认为你想把它改成流利的(或"方法语法"),如果是这样,这里是直接翻译

db.PageLayouts.Where(x => x.ZoneName == zone.Name)
              .Join(db.PageLayouts,
                    l => l.PageId,
                    p => p.PageId,
                    (l,p) => new { l,p })
              .Where(z => x.p.ZoneName == PageName)
              .OrderBy(x => x.l.AppearanceOrder)
              .Select(x => x.l)
              .ToList();

我认为您的联接没有多大意义,但我只是将语法从linq改为fluent。

PS:这个答案制作得很快,没有想太多,小心处理

我们在LINQ中有查询语法和方法语法。

//Query syntax:
IEnumerable<int> numQuery1 = 
    from num in numbers
    where num % 2 == 0
    orderby num
    select num;
//Method syntax:
IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

入门语言集成查询(LINQ)中的大多数查询文档是使用LINQ声明性查询语法编写的。但是,必须将查询语法转换为编译代码时使用.NET公共语言运行库(CLR)。这些方法调用调用具有名称的标准查询运算符例如Where、Select、GroupBy、Join、Max和Average。你可以打电话它们直接使用方法语法而不是查询语法。