-1

以下のクエリを LINQ ステートメントに変換しようとしています。

SELECT
    TOP 10
      S.Id
    , S.Url
    , S.Score
    , MAX(LastUpdated) AS LastUpdated
FROM
    Sites S
    LEFT JOIN History H ON S.ID = H.SiteId
WHERE
    S.Active = 1 AND Approved = 1
GROUP BY
      S.Id
    , S.Url
    , S.Score
ORDER BY LastUpdated

助けてください!

4

1 に答える 1

1

このようなものが動作するはずです:

var result = (
    from s in Sites
    join h in History
        on s.ID equals h.SiteID into left1
    from left2 in left1.DefaultIfEmpty()
    where s.Active == true && left2.Approved == true
    group left2 by new {s.ID, s.Url, s.Score} into grouped
    orderby grouped.Max(h => h.LastUpdated)
    select new
    {
        SiteID = grouped.Key.ID,
        Url = grouped.Key.Url,
        Score = grouped.Key.Score,
        LastUpdated = grouped.Max(h => h.LastUpdated)
    })
    .Take(10);

とにかく、 LINQPadでテストしたときに機能しました。

于 2013-06-06T16:13:33.537 に答える