如何获得列表中的最大ID然后返回列表 [英] How to get maximum Id in List and then return list
本文介绍了如何获得列表中的最大ID然后返回列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的结构:
无ID名称状态
1 1 A 1
2 1 B 1
3 1 c 1
4 1 D 1
5 2 E 3
6 2 F 3
7 2 G 3
当我得到一个列表时,我想运行一个linq结果获取最大的行数,以及每个状态和行的详细信息。像:
无ID名称状态
4 1 D 1
7 2 G 3
code>
意味着最新的状态。
有没有办法,因为我尝试了所有Max,Orderby递减,但是我得到了单一结果,但是我需要一个List作为结果。
必须提取相同id(GroupBy)的组,然后使用SelectMany将每个组的最大编号导出:
public void Exec()
{
var items = new List< Item> {
new Item {No = 1,Id = 1,Name =A,状态= 1},
新项目{No = 2,Id = 1,Name =B,Status = 1},
New Item {No = 3,Id = 1,Name =C ,状态= 1},
新项目{No = 4,Id = 1,Name =D,Status = 1},
New Item {No = 5,Id = 2,Name = E,状态= 1},
新物品{No = 6,Id = 2,Name =F,Status = 1},
新物品{No = 7,Id = Name =G,Status = 1},
};
var result = items
.GroupBy(groupedItems => groupedItems.Id)
.SelectMany(i =>项目
.Where(innerItem => innerItem.Id == i.Key&& amp; innerItem.No == i.Max(ii => ii.No))
.Select(innerItem => innerItem)
);
foreach(结果中的变量)
Console.WriteLine(ID {0}的最大项目:否= {1},名称= {2},状态= {3} ,item.Id,item.No,item.Name,item.Status);
}
私人课程项目
{
public Int32否{get;组; }
public Int32 Id {get;组; }
public String Name {get;组; }
public Int32 Status {get;组;输出:
$ b pre> Id 1的最大项目:No = 4,Name = D,Status = 1
Id 2的最大项目:No = 7,Name = G,Status = 1
另类:
items.GroupBy(groupedItems => groupedItems.Id)
.Select(g => g.OrderByDescending(x => x.No) .First())
I have a structure like this:
No ID Name Status
1 1 A 1
2 1 B 1
3 1 c 1
4 1 D 1
5 2 E 3
6 2 F 3
7 2 G 3
I want to run a linq when I get a list results get maximum row where for each status and row details as well.Like:
No ID Name Status
4 1 D 1
7 2 G 3
Means latest entry for the status.
Is there a way around, as I have tried all Max, Orderby descending but I get single result but I need a List as a result.
解决方案
You have to extract the groups of a same id (GroupBy), and then export the max No for each group, with a SelectMany :
public void Exec()
{
var items = new List<Item>{
new Item{ No = 1, Id = 1, Name = "A", Status = 1} ,
new Item{ No = 2, Id = 1, Name = "B", Status = 1} ,
new Item{ No = 3, Id = 1, Name = "C", Status = 1} ,
new Item{ No = 4, Id = 1, Name = "D", Status = 1} ,
new Item{ No = 5, Id = 2, Name = "E", Status = 1} ,
new Item{ No = 6, Id = 2, Name = "F", Status = 1} ,
new Item{ No = 7, Id = 2, Name = "G", Status = 1} ,
};
var result = items
.GroupBy(groupedItems => groupedItems.Id)
.SelectMany(i => items
.Where(innerItem => innerItem.Id == i.Key && innerItem.No == i.Max(ii => ii.No))
.Select(innerItem => innerItem)
);
foreach (var item in result)
Console.WriteLine("Max item of Id {0} : No = {1}, Name = {2}, Status = {3}", item.Id, item.No, item.Name, item.Status);
}
private class Item
{
public Int32 No { get; set; }
public Int32 Id { get; set; }
public String Name { get; set; }
public Int32 Status { get; set; }
}
output :
Max item of Id 1 : No = 4, Name = D, Status = 1
Max item of Id 2 : No = 7, Name = G, Status = 1
Alternative:
items.GroupBy(groupedItems => groupedItems.Id)
.Select(g => g.OrderByDescending(x => x.No).First())
这篇关于如何获得列表中的最大ID然后返回列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文