我目前有一个LINQ查询工作正常,但我想知道如何将其转换为LINQ流畅的API格式。我已经尝试在谷歌上搜索一个关于流畅API的体面教程,试着去学习我的自我,但似乎没有。
这是我要转换的查询:
from s in db.Sections
join f in db.Files
on s.LogoFileID equals f.ID into s_f
where s.RouteName == SectionRoute
from x in s_f.DefaultIfEmpty()
select new GameSectionVM
{
SectionID = s.ID,
GameTitle = s.Title,
LogoFileName = x.FileName,
Synopsis = s.Synopsi
}).Single();
答案 0 :(得分:2)
ReSharper提供以下转换:
(db.Sections.GroupJoin(db.Files, s => s.LogoFileID, f => f.ID, (s, s_f) => new { s, s_f })
.Where(@t => s.RouteName == SectionRoute)
.SelectMany(@t => s_f.DefaultIfEmpty(), (@t, x) => new GameSectionVM
{
SectionID = s.ID,
GameTitle = s.Title,
LogoFileName = x.FileName,
Synopsis = s.Synopsi
})).Single();
我不能保证其准确性,但它至少应该帮助你开始。 GroupJoin似乎是至少需要进行外连接的。
答案 1 :(得分:1)
很难准确说出在您的情况下会起什么作用,因为您还没有提供所有相关类型的详细信息;但是,有点像这样:
(db.Sections.GroupJoin(db.Files, s => s.LogoFileID, f => f.ID, (s, s_f) => new {s, s_f})
.Where(t => t.s.RouteName == SectionRoute)
.SelectMany(t => t.s_f.DefaultIfEmpty(), (t, x) => new GameSectionVM
{
SectionID = t.s.ID,
GameTitle = t.s.Title,
LogoFileName = x.FileName,
Synopsis = t.s.Synopsis
})).Single();
假设Section
类存在且具有正确命名的属性Synopsis
(不是Sysnopsi
)