C#跳过第一行,但希望它跳过最后一行

MBr*_*ers 3 c# linq

不确定这是否是最好的方法,但到目前为止这是我的代码.目前,它保留第一个副本并从表中删除其他副本.我希望它保留最后一行的最大OrderId数字并删除其余部分.我试过Take而不是Skip但似乎无法让它正常工作.

var duplicateRow = (from o in db.Orders
                    group o by new { o.CustomerId } into results
                    select results.Skip(1)
                    ).SelectMany(a => a);

db.Orders.DeleteAllOnSubmit(duplicateRow);
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Tim*_*ter 5

既然你不使用OrderBy结果是任意的

我希望它保留最后一行的最大'OrderId'号

然后使用:

var duplicateRows =  db.Orders
    .GroupBy(x => x.CustomerId)
    .SelectMany(g => g.OrderByDescending(o => OrderId).Skip(1));
Run Code Online (Sandbox Code Playgroud)