2017-07-26 32 views
-1

各オブジェクトには3つのクライアントがあり、各クライアントにはクライアントコードとクライアント名があります。私は別のオブジェクトのクライアントコードでグループ化するためにC#Linqを使用したいと思います。Linq Groupby同じ名前の複数の列(匿名型は同じ名前の複数のプロパティを持つことはできません)

オブジェクト[0]:クライアント "pickupFrom" が有している:クライアント "pickupFrom" は "clientCode" クライアント "loadAt" は "clientCode" クライアント "deliverTo" は "clientCode"

オブジェクト[1]を有していました「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

一意の名前を付けてください。またobjectではなく、lineを使用すると思います。

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

笑それは簡単なものだった..ありがとう!!! 評判が低いため、回答としてマークすることはできません –

関連する問題