C# 按产品id区分

C# 按产品id区分,c#,C#,下面是我的班级 public class MyGroceryListItems { public int ProductId { get; set; } public string ProductName { get; set; } public int Quantity { get; set; } } 现在,我从数据库中获取这个类的值,并将这些类放入IList。但是,有些重复的项目具有相同的id,但数量不同。如何通过id仅获取不同的条目 我尝试了list.dist

下面是我的班级

public class MyGroceryListItems
{
    public int ProductId { get; set; }

    public string ProductName { get; set; }

    public int Quantity { get; set; }
}
现在,我从数据库中获取这个类的值,并将这些类放入
IList
。但是,有些重复的项目具有相同的
id
,但数量不同。如何通过
id
仅获取不同的条目


我尝试了list.distinct,但没有成功,因为在具有相同产品id的记录中,并非所有条目都相同。

您可以实现一个相等比较器。msdn上有一个很好的例子:


<>这会给你更多的控制,你认为哪些项目是平等的。但是需要更多的编码。如果您想从共享一个id的所有项目中选择一个或多个随机项目,那么您最好使用spender的解决方案您可以实现一个相等比较器。msdn上有一个很好的例子:

IEnumerable<MyGroceryListItems> items = ...;
var uniqueItemsByProdId = 
      items.GroupBy(x => x.ProductId).Select(g => g.First());
<>这会给你更多的控制,你认为哪些项目是平等的。但是需要更多的编码。如果您想从共享一个id的所有项目中选择一个或多个随机项目,那么您最好使用spender的解决方案

IEnumerable<MyGroceryListItems> items = ...;
var uniqueItemsByProdId = 
      items.GroupBy(x => x.ProductId).Select(g => g.First());
像这样:

 items.DistinctBy(x => x.ProductId)
也许更有用的是一个查询,它按ProductId给出每个项目的合计数量:

 items
   .GroupBy(x => x.ProductId)
   .Select(g => new MyGroceryListItems{
                      g.Key.ProductId,
                      g.Key.ProductName,
                      Quantity = g.Sum(gg => gg.Quantity)
                })
像这样:

 items.DistinctBy(x => x.ProductId)
也许更有用的是一个查询,它按ProductId给出每个项目的合计数量:

 items
   .GroupBy(x => x.ProductId)
   .Select(g => new MyGroceryListItems{
                      g.Key.ProductId,
                      g.Key.ProductName,
                      Quantity = g.Sum(gg => gg.Quantity)
                })

如果有多个具有相同ID的条目,您希望获取哪个条目?为什么会有多个具有相同ID的条目?如果它是同一个ID,那么它应该是同一个对象,否则它就不是真的和ID。尽管@Spender可以给出你所需要的答案,但我仍然觉得设计有问题。同一个产品id,数量不同,听起来不太好。例如,在现实世界中,如果你买了两包面包,你不会在账单上看到面包包数量1的价格是5美元,而面包包数量1的价格是5美元的两倍。相反,你会看到像面包包数量2价格10美元。您的场景与示例中的第一个场景类似。虽然这不是主题,但我只是想指出,你仍然可以重新设计它。@srsyogesh,最近我在商店买了两个袋子来装我买的东西,当它们经过现金箱后,我突然决定再拿一个。。这里我们有“第一个场景”=D@srsyogesh:我在帖子的结尾添加了一些内容来解决这个问题。如果有多个条目具有相同的ID,您希望获取哪个条目?为什么会有多个条目具有相同的ID?如果它是同一个ID,那么它应该是同一个对象,否则它就不是真的和ID。尽管@Spender可以给出你所需要的答案,但我仍然觉得设计有问题。同一个产品id,数量不同,听起来不太好。例如,在现实世界中,如果你买了两包面包,你不会在账单上看到面包包数量1的价格是5美元,而面包包数量1的价格是5美元的两倍。相反,你会看到像面包包数量2价格10美元。您的场景与示例中的第一个场景类似。虽然这不是主题,但我只是想指出,你仍然可以重新设计它。@srsyogesh,最近我在商店买了两个袋子来装我买的东西,当它们经过现金箱后,我突然决定再拿一个。。这里我们有“第一个场景”=D@srsyogesh当前位置我在帖子末尾添加了一些内容,以解决这个问题。