首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linq中用row_number-1按时间顺序编写group子句

如何在linq中用row_number-1按时间顺序编写group子句
EN

Stack Overflow用户
提问于 2020-11-23 21:25:19
回答 1查看 103关注 0票数 0

我想加入两个表概述和变压器位置表。我想找到每一个设备的最新记录,然后加入位置表。

代码语言:javascript
复制
[HttpGet]
[Route("overview_locations")]
public HttpResponseMessage GetoverviewLocations()
{
    var overviewDetails = _dbContext.Overviews.ToList();
    if (overviewDetails.Count != 0)
    {
        return Request.CreateResponse(HttpStatusCode.OK, overviewDetails, Configuration.Formatters.JsonFormatter);
    }
    else
    {
       
    }
}

样本数据

代码语言:javascript
复制
2020-11-23 01:03:07.000 8673220311024   0   0   23.842163   91.280693
2020-11-23 01:01:06.000 8673220311024   0   0   23.842163   91.280693
2020-11-23 01:00:00.000 8645020301067   0   0   23.841940   91.280306

Exp op

代码语言:javascript
复制
 2020-11-23 01:03:07.000 8673220311024   0   0   23.842163   91.280693
 2020-11-23 01:00:00.000 8645020301067   0   0   23.841940   91.280306

sql

代码语言:javascript
复制
select * 
from 
    (select 
        o.devicetimestamp, 
        o.deviceimei, 
        o.oti_a, 
        oti_t,  
        ts.latitude, 
        ts.longitude, 
        row_number() over(partition by o.deviceimei order by o.devicetimestamp desc) rn 
    from overview  
    inner join transformerlocations ts 
        on o.deviceimei = ts.imei  
    where ts.latitude is not null) t 
where rn = 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-25 20:26:04

要按第一个ROW_NUMBER()转换筛选,您需要按PARTITION分组,然后按需要对每个组进行排序,并在每个组中选择第一个项。

代码语言:javascript
复制
var ans = from o in overview
          join ts in transformerlocations on o.deviceimei equals ts.imei
          where ts.latitude != null
          group new { o, ts } by o.deviceimei into otsg
          select (
             from ots in otsg
             orderby ots.o.devicetimestamp descending
             select new {
                 ots.o.devicetimestamp,
                 ots.o.deviceimei,
                 ots.o.oti_a,
                 ots.ts.latitude,
                 ots.ts.longitude
             }
          ).FirstOrDefault();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64976690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档