Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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/8/linq/3.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# 如何从存在多个重复行的相同对象的对象列表中获取最大值_C#_Linq - Fatal编程技术网

C# 如何从存在多个重复行的相同对象的对象列表中获取最大值

C# 如何从存在多个重复行的相同对象的对象列表中获取最大值,c#,linq,C#,Linq,我有从数据库返回的对象列表,有时它甚至可能有25k到50k条记录 我现在用一个顺序对它们进行分组,以生成相应项目的组 但是,我还需要为每个分组列表获取该列表中对象的最大版本,因为在这些分组列表中也会有很多重复版本 public class Items { public int ID { get; set; } public string ProductName { get; set; } public int ProductId { get; set; } pub

我有从数据库返回的对象列表,有时它甚至可能有25k到50k条记录

我现在用一个顺序对它们进行分组,以生成相应项目的组

但是,我还需要为每个分组列表获取该列表中对象的最大版本,因为在这些分组列表中也会有很多重复版本

public class Items
{
    public int ID { get; set; }
    public string ProductName { get; set; }
    public int ProductId { get; set; }
    public int Version { get; set; }
}

public class ItemInfo : ReleaseInfo
{
    public virtual IGrouping<int,Items> ItemList { get; set; }
}
此Itemlist从DB返回,列如下:

ID、名称、产品名称、产品标识和版本

因此,现在我们需要使用相同的ID和ProductId检查每个groupedList是否有重复的项,如果我们需要使用Version列获取该项的最大值,并仅将其保留在列表中

示例数据集: 第一组列表:

**ROW 1** ID - 1, Product ID - 1 Version 1
**ROW 2** ID - 1, Product ID - 1 Version 2
**ROW 3** ID - 1, Product ID - 1 Version 3
**ROW 1** ID - 1, Product ID - 2 Version 1
**ROW 2** ID - 2, Product ID - 2 Version 2
第二组列表:

**ROW 1** ID - 1, Product ID - 1 Version 1
**ROW 2** ID - 1, Product ID - 1 Version 2
**ROW 3** ID - 1, Product ID - 1 Version 3
**ROW 1** ID - 1, Product ID - 2 Version 1
**ROW 2** ID - 2, Product ID - 2 Version 2
根据上述数据,需要将第一个列表中的ID-1、产品ID-1、版本3和第二个列表中的第二行传递到下一步


如何进行分组,如果是单个实体,我可以按降序进行排序,并获取第一个元素,但我需要循环浏览其他实体也可用的项目列表。

我根据我的理解给出此答案,如果我遗漏了任何内容或未理解您的要求,请发表意见,我将更新答案

public class Items
{
    public int ID { get; set; }
    public string ProductName { get; set; }
    public int ProductId { get; set; }
    public int Version { get; set; }
}

public class ItemInfo : ReleaseInfo
{
    public virtual IGrouping<int,Items> ItemList { get; set; }
}
假设您的课程如下:

public class Items
{
    public int ID { get; set; }
    public string ProductName { get; set; }
    public int ProductId { get; set; }
    public int Version { get; set; }
}

public class ItemInfo
{
    public virtual IEnumerable<IGrouping<int, Items>> ItemList { get; set; }
}
公共类项目
{
公共int ID{get;set;}
公共字符串ProductName{get;set;}
public int ProductId{get;set;}
公共int版本{get;set;}
}
公共类ItemInfo
{
公共虚拟IEnumerable ItemList{get;set;}
}

林克:

List itemLists=新列表();
var filteredItems=itemLists.Where(x=>x.Version==itemLists.Where(y=>y.ProductId==x.ProductId.Max(z=>z.Version));
var itemsInfo=newiteminfo{ItemList=filteredItems.GroupBy(x=>x.ProductId)};

如果是一个实体,我可以按降序排序,并获取第一个元素,但我需要循环浏览其他实体也可用的项目列表
,能否请您对此进行更多解释?有一点不同,我已更新了我的问题,请检查。顺便说一句,提前谢谢,我有这个想法,但铸造失败,所以我现在检查。更新:请现在检查请现在检查。更新了答案,修改了
ItemInfo
类。请检查一下。您可以获取IEnumerable或as modified@Samaritan\u learner感谢您的帮助,我仍在修改转换,我将更新答案。希望你不会介意。再次感谢。