我有以下清单
ID Counter SrvID FirstName
-- ------ ----- ---------
1 34 66M James
5 34 66M Keith
3 55 45Q Jason
2 45 75W Mike
4 33 77U Will
Run Code Online (Sandbox Code Playgroud)
我喜欢做的是按ID按升序排序,然后得到Counter,SrvID的第一个值相同(如果有的话).
所以输出将是这样的:
ID Counter SrvID FirstName
-- ------ ----- ---------
1 34 66M James
2 45 75W Mike
3 55 45Q Jason
4 33 77U Will
Run Code Online (Sandbox Code Playgroud)
注意如何从列表中删除ID为5,因为Counter和SrvID与我对ID 1的相同,但是ID 1首先被删除了5.
这是我会做但不工作的
var result = (from ls in list1
group ts by new {ls.Counter, ls.SrvID}
order by ls.ID
select new{
ls.ID,
ls.Counter.FirstOrDefault(),
ls.SrvID.First, …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取按 desc 订购的客户的每种类型笔记之一的列表。在 SQL Server 中,我编写了以下查询
SELECT
note_id, st_id, note_type, signature_date
FROM
(SELECT
note_id, st_id, note_type, signature_date
ROW_NUMBER() OVER (PARTITION BY note_type ORDER BY signature_dateDESC) AS row_num
FROM
notes_log
WHERE
cl_id = 1
AND svce_type = 'service type 1'
AND (note_type = 'note type 1' OR note_type = 'note type 2' OR note_type = 'note type 3')
) AS subquery
WHERE row_num = 1
ORDER BY signature_date DESC;
Run Code Online (Sandbox Code Playgroud)
这个查询工作正常,但是当将上面的查询转换为 Linq 时,我遇到了一些错误。这就是我所做的
var lastNotes = await dbContext.Set<NotesLog>()
.Where(s => s.ClientId == …Run Code Online (Sandbox Code Playgroud) 我有一个返回一些记录的查询.
例如:
我使用了以下查询:
var sData = vehicle.GsmDeviceLogs
.Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
.OrderBy(gs => gs.DateTimeOfLog)
.ToList();
Run Code Online (Sandbox Code Playgroud)
现在,我只想获取每个日期的第一条记录.即