gpt4 book ai didi

c# - 通过两列的组合选择不同的项目,其中第三列的值为 max-LINQ

转载 作者:行者123 更新时间:2023-11-29 01:50:58 25 4
gpt4 key购买 nike

我的Object结构是这样的

public class ProductToBids
{

public int BidAmount { get; set; }
public DateTime? BidDate { get; set; }
public int BiddedUserId { get; set; }
public string BidderEmail { get; set; }
public string bidderName { get; set; }
public int BidStatus { get; set; }
public int FairId { get; set; }
public string ProductDescription { get; set; }
public int ProductId { get; set; }
public string ProductName { get; set; }
}

我有一个这样的对象列表

List<ProductToBids> productsInThisFairs = new List<ProductToBids>();
productsInThisFairs = FillData();

现在我想从此列表中选择所有行,其中 BiddedUserIdProductId 的组合是唯一的,如果有多个行满足此条件我只想选择BidAmount 列中具有最高值的行 我怎样才能做到这一点?我已经尝试通过首先将项目按两列分组然后取最大值来做到这一点代码是这样的

productsInThisFairs.DistinctBy(x=>new {x.ProductId,x.BiddedUserId }).ToList()

但明白这将只返回列表中的这两列,所有其他列都将被丢弃。谁能指出实现这一目标的正确方法是什么?

最佳答案

您可以尝试根据列表项的 ProductIdBidderUserId 对它们进行分组,然后为每个组选择具有最高 BidAmount 的记录。后者可以通过根据 BidAmount 降序排列组项目来完成,然后选择每个组的第一个项目。

var result = productsInThisFairs.GroupBy(prd=>new { prd.ProductId, prd.BiddedUserId})
.Select(grp => grp.OrderByDescending(item=>item.BidAmount)
.FirstOrDefault());

关于c# - 通过两列的组合选择不同的项目,其中第三列的值为 max-LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43423025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com