Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过两列的组合选择不同的项,其中第三列的值为max-LINQ_C#_Mysql_Sql Server_Linq - Fatal编程技术网

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我的坏:(…对不起…我刚刚更正了。请检查我的更新。