2017-07-26 129 views
-1

我有对象的阵列中的每个对象具有3个客户端,每个客户端具有客户代码和客户机名称。我想用C#Linq按客户端代码分组不同的对象。具有相同名称的LINQ GROUPBY多个列(匿名类型不能具有相同名称的多个属性)

对象[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完成的。 有没有办法解决这个问题?

+0

你确定'object.pickupFrom.clientCode'吗?也许你的意思是'line.pickupFrom.clientCode'? –

回答

2

只要给他们唯一的名称。此外,我想你想用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(); 
+0

呃大声笑,这是一个容易的..谢谢! 我不能记住这作为一个答案,虽然由于低信誉 –

相关问题