相关疑难解决方法(0)

linq group by,order by

我有以下清单

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)

c# linq

22
推荐指数
2
解决办法
6万
查看次数

如何获取从 EF Core 查询返回的每种类型之一

我正在尝试获取按 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)

c# sql-server asp.net asp.net-web-api entity-framework-core

6
推荐指数
1
解决办法
105
查看次数

在Linq的GroupBy中取1

我有一个返回一些记录的查询.

例如:

  • 日期是26日至2月,然后返回此日期的10条记录.
  • 日期是27日至2月,然后返回此日期的15条记录.

点击查看记录

我使用了以下查询:

 var sData = vehicle.GsmDeviceLogs
                    .Where(gs => gs.Speed > zeroSpeed && !gs.DigitalInputLevel1)
                    .OrderBy(gs => gs.DateTimeOfLog)
                    .ToList();
Run Code Online (Sandbox Code Playgroud)

现在,我只想获取每个日期的第一条记录.即

  • 日期是26 - 2月 - 1记录.
  • 日期是27日至2月1日记录.

c# linq

4
推荐指数
1
解决办法
118
查看次数