C# 通过两列的组合选择不同的项,其中第三列的值为max-LINQ
我的对象结构是这样的C# 通过两列的组合选择不同的项,其中第三列的值为max-LINQ,c#,mysql,sql-server,linq,C#,Mysql,Sql Server,Linq,我的对象结构是这样的 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 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();
productsInThisFairs.DistinctBy(x=>new {x.ProductId,x.BiddedUserId }).ToList()
我有一张这样的物品清单
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();
productsInThisFairs.DistinctBy(x=>new {x.ProductId,x.BiddedUserId }).ToList()
但是要知道,这将只返回列表中的这两列,所有其他列都将被丢弃。任何人都可以指出实现这一点的正确方法吗?您可以根据列表项的
ProductId
和BidderUserId
对其进行分组,然后让每组选择出价最高的记录。后者可以通过根据组项目的biddamount
按降序排列组项目,然后选择每组的第一个项目来完成
var result = productsInThisFairs.GroupBy(prd=>new { prd.ProductId, prd.BiddedUserId})
.Select(grp => grp.OrderByDescending(item=>item.BidAmount)
.FirstOrDefault());
引发类似这样的错误。无法在此作用域中声明名为“grp”的局部变量,因为它将赋予“grp”不同的含义,而“grp”已在“父或当前”作用域中用于表示某些内容else@Athul我的坏:(…对不起…我刚刚更正了。请检查我的更新。