首页 > 解决方案 > 如何使用 LINQ 获取最新号码

问题描述

这里列出了 db 表中客户的付款历史记录

CustomerId  PayId   FeePaid
xx-yy-zz    37      0
xx-yy-zz    32      0
xx-yy-zz    31      30.00
xx-yy-zz    28      0
xx-yy-zz    26      0
xx-yy-zz    18      35.99
xx-yy-zz    17      0
xx-yy-zz    16      0
xx-yy-zz    9       12.00
xx-yy-zz    6       0

PaymentId 列自动递增。如何获得该客户的最后一笔付款,即数字 $30.00?我的项目是 Asp.net API,所以我需要使用 LINQ 来获取号码。

标签: c#asp.netdatabaselinq

解决方案


如果我们假设我们忽略零,并且PayId是单调递增的,那么大概:

作为 LINQ:

var val = ctx.SomeTable
    .Where(x => x.CustomerId == customerId && x.FeePaid != 0)
    .OrderByDescending(x => x.PayId)
    .Select(x => x.FeePaid)
    .First();

或作为 SQL:

select top 1 FeePaid
from SomeTable
where CustomerId = @customerId
and FeePaid <> 0
order by PayId desc

推荐阅读