-1

最近、stackoverflowの誰かが、探していたデータを返すためにこのSQLクエリを作成するのを手伝ってくれました。

ASP.NET MVC3 C#プロジェクト内で使用できるように、これをLINQステートメントに変換する必要があります。

ありがとう!

SELECT TOP 4 a.GalleryID, a.GalleryTitle, a.GalleryDate, MAX(b.MediaThumb) AS MediaThumb
FROM Galleries a
INNER JOIN Media b
ON a.GalleryID = b.GalleryID
GROUP BY a.GalleryID, a.GalleryTitle, a.GalleryDate
ORDER BY a.GalleryID desc
4

3 に答える 3

2

編集:これは、与えられたT-Sqlに従ってグループ化されたバージョンです:

var Results = (from g in DB.Galleries
               join m in DB.Media
               on g.GalleryID equals m.GalleryID
               group m by new { g.GalleryID, g.GalleryTitle, g.GalleryDate } into grp
               orderby grp.Key.GalleryID descending
               select new LatestGalleries
               {
                   GalleryID = grp.Key.GalleryID,
                   GalleryTitle = grp.Key.GalleryTitle,
                   GalleryDate = grp.Key.GalleryDate,
                   MediaThumb = grp.FirstOrDefault().MediaThumb
               });
于 2012-07-11T20:16:36.233 に答える
1

このようなものが機能するはずです:

(
  from a in galleries
  join b in media on b.GalleryID equals a.GalleryID
  group by new {a.GalleryID, a.GalleryTitle, a.GalleryDate} into grouping
  order by grouping.Key.GalleryID
  select new {grouping.Key.GalleryID, grouping.Key.GalleryTitle, grouping.Key.GalleryDate, grouping.Max(x=>x.MediaThumb)}
).Take(4)
于 2012-07-11T20:17:22.637 に答える
0

最初にメディアでEFナビゲーションプロパティを構成してから、次のことを行う必要があります。

var q = (from a in db.Galleries
        group a by new { a.GalleryID, a.GalleryTitle, a.GalleryDate } into g
        orderby g.Key.GalleryID descending
        select new
        {
            GalleryID = g.Key.GalleryID,
            GalleryTitle = g.Key.GalleryTitle,
            GalleryDate = g.Key.GalleryDate,
            MediaThumb = g.Max(a => a.Media) // Gallery.Media is a navigation property
        }).Take(4);
于 2012-07-11T20:21:58.720 に答える