Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq列表以共享除具有特定状态的复制之外的所有_C#_Linq - Fatal编程技术网

C# Linq列表以共享除具有特定状态的复制之外的所有

C# Linq列表以共享除具有特定状态的复制之外的所有,c#,linq,C#,Linq,好的,各位。我有一个包含两个属性的列表:ID和Status。 前任 1001已装运 1002已装运 1003已装运 1003取消 从这个列表中,我需要获得除“已取消”状态的复制项目之外的所有项目。从本质上看,如果他们被欺骗,那么他们只会被欺骗一次,如果是的话,不要在新列表中包含“取消”的一个。因此,新列表应该包含1001、1002和1003 如果我有: 1001取消 1002取消 1003取消 1004取消 该列表将包含1001、1002、1003和1004。我可以在Items.GroupByp

好的,各位。我有一个包含两个属性的列表:ID和Status。 前任 1001已装运 1002已装运 1003已装运 1003取消

从这个列表中,我需要获得除“已取消”状态的复制项目之外的所有项目。从本质上看,如果他们被欺骗,那么他们只会被欺骗一次,如果是的话,不要在新列表中包含“取消”的一个。因此,新列表应该包含1001、1002和1003

如果我有: 1001取消 1002取消 1003取消 1004取消
该列表将包含1001、1002、1003和1004。我可以在Items.GroupByproduct=>new{product.ProductID,product.Status}.ToList中使用C中的linq构建这个初始列表,但无法继续。任何帮助都将不胜感激。谢谢。

根据您指定的规则,只需使用Distinct选择唯一的产品ID即可:

Items.Select(product => product.ProductID).Distinct()
第一个样本为100110003,第二个样本为10011000210031004

如果您不想选择上次状态为“已取消”且时间线仅由初始列表中的项目顺序表示的产品ID:

 Items.GroupBy(product => product.ProductID)
      .Where(g => g.Last().Status != "Cancelled")
      .Select(g => g.Key)

目前还不清楚您对选择项目应用了哪些规则。您已从第一个和第二个列表中选择了所有项目。您试图选择的是-整个对象还是仅id?若对象有多个状态呢?从第一个列表中,我选择了项目1、2和3,而不是4。4未被选择,因为它的ID是重复的且“已取消”。从第二个列表中,由于ID没有被复制,所以所有ID都被拾取。第一个列表中没有4个-有1001、1002和1003-您选择了所有这些ID是的,但它没有1001、1002、1003和1003。是的,谢谢。我以前试过。问题在于,当传递产品对象以供消费时,传递的1003产品不能是“已取消”的产品。In需要是“已装运”的。使用Distinct,可能会选择“已取消”的,因为列表中的顺序对我来说是不可预测的。对不起,我想我把最初的问题简化了。@bobj您已经指出您只选择产品的ID。可能在产品类中还有其他字段。可能是更新日期,或者记录id,我想你们实际上有一些类引用了产品,而不是产品本身或者类似的东西。以便可以选择具有最新状态的对象。您应该使用更好的示例更新问题,这些示例包括同一产品的不同状态,以及至少一个不应该更新的产品selected@bobj您还说1003产品不能处于取消状态,但是你的第一个样品清楚地表明,你选择的产品处于取消状态。我将深入产品类别,看看是否有这样的信息,好的潜在客户。为了澄清问题,让我们将它们称为第一、第二、第三和第四个对象。已装运的第三个对象1003良好,但已取消的第四个对象1003不良。抱歉搞混了,我会的,谢尔盖。我非常感谢你的帮助!