将列表拆分为当前和归档项目

时间:2014-02-04 15:23:51

标签: c# asp.net linq

我有一个带有问题编号的项目列表

 ID        Issue 
 apple     1 
 orange    1 
 apple     2 
 apple     3 
 orange    2

我想创建两个列表,一个是“当前”项目,哪个是具有最高发行号的项目,另一个列表是所有其他列表减去当前项目(称之为归档)

如果我的列表将有大约1000个条目(相当小)

,那么这是最好的方法

2 个答案:

答案 0 :(得分:4)

这可能会有所帮助

var currentIssue = list.Max(x => x.Issue); 
var currentItems = list.Where(x => x.Issue == currentIssue).ToList();
var archiveItems = list.Where(x => x.Issue != currentIssue).ToList();

答案 1 :(得分:2)

如果您需要找到每个“ID”的最高“问题”:

var maxList = yourList.GroupBy(x => x.Name)
                      .Select(x => x.Where(y => y.Id == x.Max(z => z.Id)))
                      .SelectMany(x => x);

var theRest = yourList.Except(maxList);

这将在第一个列表中返回“Orange / 2”和“Apple / 3”,在第二个列表中返回其他三个记录。