从这个列表中,我需要通过“已取消”'取得所有EXCEPT待办事项。状态。基本上,看看他们是否被欺骗(只会被欺骗一次),如果是,则不要包括“已取消”'一个在新名单中。因此新列表应包含1001,1002和1003.
所以,如果我有:
1001取消
1002取消
1003取消
1004取消
该列表将包含1001,1002,1003和1004.我能够使用C#中的linq构建此初始列表(如" Items.GroupBy(product => new {product.ProductID,product。状态})。ToList()"),但无法继续进行。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
根据您指定的规则,使用Distinct()
简单选择唯一的产品ID即可完成此任务:
Items.Select(product => product.ProductID).Distinct()
第一个样本为1001, 1002, 1003
,第二个样本为1001, 1002, 1003, 1004
。
如果您不想选择 last 状态为已取消的产品ID,时间线仅由初始列表中的项目顺序表示:
Items.GroupBy(product => product.ProductID)
.Where(g => g.Last().Status != "Cancelled")
.Select(g => g.Key)