C# 如何从存在多个重复行的相同对象的对象列表中获取最大值
我有从数据库返回的对象列表,有时它甚至可能有25k到50k条记录 我现在用一个顺序对它们进行分组,以生成相应项目的组 但是,我还需要为每个分组列表获取该列表中对象的最大版本,因为在这些分组列表中也会有很多重复版本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
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感谢您的帮助,我仍在修改转换,我将更新答案。希望你不会介意。再次感谢。