1

LINQ の専門家、ユーザーごとに最新のデータを更新して、「ダミー」のテーブルがあると説明します。

CREATE TABLE [dbo].[dummy](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [TimeStamp] [datetime] NOT NULL,
    [UserId] [int] NOT NULL,
    [TransAmount] [decimal](10, 4) NOT NULL
) ON [PRIMARY]

私がやろうとしているのは、次のような SQL を使用して、各 UserId の最新のレコードを取得することです。

select * from dummy d1 join 
(
select max(id) as id 
from dummy d1
Join (select distinct userid from dummy) d2 on d1.userid = d2.userid
group by d1.userid)
as d2 on d1.id = d2.id

しかし、私はLINQを使ってこれをやろうとしています。

ありがとう。

4

3 に答える 3

2

以下は、メソッド構文を使用して同様に機能します。

var maxIds = dummy.GroupBy(d => d.UserId, (userId, dummyGroup) => 
dummyGroup.Max(dg => dg.Id));

レコード全体が必要な場合は、次を使用できます。

var recordsWithMaxId = dummy.GroupBy(d => d.UserId, (userId, dummyGroup) => 
dummyGroup.OrderByDescending(dg => dg.Id).First());
于 2013-05-29T20:39:07.160 に答える
-1

それを確認します :

var maxID = dummy.Max(i => i.UserID)
var row = table.First(i => i.UserID == maxID);

参照元:リンク

于 2013-05-29T18:40:01.597 に答える