Linq列表以除了具有特定状态的副本以外的所有内容

时间:2017-03-28 23:16:42

标签: c# linq

好的,伙计们。我有一个包含两个属性的列表:ID和Status。 EX)
1001发货
1002发货
1003发货
1003取消

从这个列表中,我需要通过“已取消”'取得所有EXCEPT待办事项。状态。基本上,看看他们是否被欺骗(只会被欺骗一次),如果是,则不要包括“已取消”'一个在新名单中。因此新列表应包含1001,1002和1003.

所以,如果我有:
1001取消
1002取消
1003取消
1004取消

该列表将包含1001,1002,1003和1004.我能够使用C#中的linq构建此初始列表(如" Items.GroupBy(product => new {product.ProductID,product。状态})。ToList()"),但无法继续进行。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 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)