1

私はLinqの前に使ったことがなく、本当に勉強する時間がありません. 私の少しの知識ではこれを行うには不十分であり、あなたの助けが必要です. これは、Linq に変換する必要があるコードです。(私はEF6とコンテキストを使用しています)

WITH messages AS (
    SELECT s.siteId,s.originator,s.sentTime,s.mode,s.mainsFrequency,s.gensetFrequency,
            s.dgBattery,s.runHours,s.fuel,s.messageID,s.messageText,
           ROW_NUMBER() OVER(PARTITION BY s.originator 
                                 ORDER BY s.sentTime DESC) AS rk
      FROM smsParseds s)
SELECT m.*
FROM messages m
WHERE m.rk = 1
order by m.sentTime DESC
4

2 に答える 2

-1

これは直訳ではありませんが (Entity Framework は行番号を使用できません)、結果は同じである必要があります

var query = from m in context.Messages
            where (from x in context.Messages
                   where m.Originator == x.Originator
                   where x.SentTime > m.SentTime
                   select x).Any() == false
            orderby m.SentTime desc
            select new
            {
              m.siteId,
              m.originator,
              m.sentTime,
              m.mode,
              m.mainsFrequency,
              m.gensetFrequency,
              m.dgBattery,
              m.runHours,
              m.fuel,
              m.messageID,
              m.messageText,
            };
于 2014-01-13T20:00:03.580 に答える