2017-07-26 131 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

呃大聲笑,這是一個容易的..謝謝! 我不能記住這作爲一個答案,雖然由於低信譽 –

相關問題