[英]Need help with converting SQL to LINQ - LEFT JOIN with Count
[英]Need help converting a SQL left join query into LINQ format
我是LINQ的新手,語法還不太好。 有人可以幫助我將此SQL查詢轉換為LINQ語句,以供在C#項目中使用。
SELECT g.GalleryTitle, m.*
FROM Media AS m LEFT JOIN Galleries AS g ON m.GalleryID = g.GalleryID
WHERE m.MediaDate >= GETDATE() - 30
ORDER BY m.Views DESC
from m in Db.Media
join g in Db.Galleries on m.GalleryID equals g.GalleryID into MediaGalleries
from mg in MediaGalleries.DefaultIfEmpty()
where m.MediaDate >= DateTime.Today.AddDays(-30)
orderby m.Views descending
select new
{
GalleryTitle = mg != null ? mg.GalleryTitle : null,
Media = m
};
我現在無法對其進行測試,但是應該是這樣的:
var result = Media.GroupJoin(Galleries, m => m.GalleryID, g => g.GalleryID,
(m, g) => new {m, g})
.SelectMany(mg => mg.g.DefaultIfEmpty(),
(m,g) => new { Media = m.m, GalleryTitle = g != null ? g.GalleryTitle : default(string) })
.OrderByDescending(m => m.Media.Views).ToList();
var result = from m in Media
join g in Galleries
on m.GalleryId equals g.GalleryId
into gJoinData
from gJoinRecord in gJoinData.DefaultIfEmpty( )
where m.MediaDate.CompareTo( DateTime.Today.AddDays( -30.0 ) ) >= 0
orderby m.Views descending
select new
{
M_Record = m,
GalleryTitle = gJoinRecord.GalleryTitle
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.