SQL的相关linq查询

本文关键字:linq 查询 SQL | 更新日期: 2023-09-27 18:14:30

我最初的查询是

select * 
from Personalization_Mapping 

相关的LINQ查询是

List<Personalization_Mapping> list = _appDbContext.Personalization_Mapping.OrderBy(s => s.ID).ToList();

现在我需要相关的唯一列,为此,我将SQL更改为

SELECT *
FROM 
    (SELECT  
         *,
         ROW_NUMBER() OVER(PARTITION BY CustomerID ORDER BY ID DESC) rn
     FROM 
         Personalization_Mapping) a
WHERE 
    rn = 1

有人能帮我找到等效的LINQ查询吗?

提前谢谢。

SQL的相关linq查询

var result = _appDbContext.Personalization_Mapping.OrderByDescending(x => x.ID)
.GroupBy(x => x.CustomerID)
.Select(g => new {g, count= g.Count()})
.SelectMany(t => t.g.Select(b => b)
.Zip(Enumerable.Range(1,t.count), (j,i) => new {j.Property1, j.Property2, rn = i}));

用实际实体替换Property1, Property2

现在为第1行应用过滤器

result.Where(x => x.rn == 1);

希望这能有所帮助。