Linq Groupby具有相同名称的多个列(匿名类型不能具有多个具有相同名称的属性)

时间:2017-07-26 15:20:46

标签: c# linq

我有一个对象数组,每个对象有3个客户端,每个客户端都有一个客户端代码和一个客户端名称。我想使用C#Linq按不同对象的客户端代码进行分组。

  

对象[0]:客户端" pickupFrom"有" clientCode"客户" loadAt"具有   " clientCode"客户" deliverTo"有" clientCode"

     

对象[1]:客户端" pickupFrom"有" clientCode"客户" loadAt"具有   " clientCode"客户" deliverTo"有" clientCode"

我希望按这些客户端进行分组,并获得一个具有一个对象的数组,因为这些客户端是相同的。

使用Linq我可以做到:

Objects[] GroupedDistinct = 
       ungroupedObjects.GroupBy(line => new { line.pickupFrom.clientCode,
                                              line.LoadAt.clientCode,
                                              line.deliverTo.clientCode })
                       .Select(x => x.First())
                       .ToArray();

这里的问题是,当将这些参数传递给groupby时,我不能多次传递clientCode,因为它定义了一个名为clientCode的字符串不止一次,即使它不是来自同一个客户端对象

错误是"匿名类型不能具有多个具有相同名称的属性" 我知道您不能多次传递相同的字符串名称,但这就是使用clientCode完成这些对象(客户端)的方式。 有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

给他们独特的名字。另外我认为您打算使用line而不是object

Objects[] GroupedDistinct = ungroupedObjects
    .GroupBy(line => new { 
        PickFromClientCode = line.pickupFrom.clientCode,
        LoadAtClientCode = line.LoadAt.clientCode,
        DeliverToClientCode = line.deliverTo.clientCode })
    .Select(x => x.First())
    .ToArray();