2017-03-08 4 views
1

私の仕事で仕事の番号、開始日、顧客名、モデル、完了日を収集するためのクエリを書くことを試みています。この情報を得るために、私は3つのテーブルを見て、それらをまとめるために結合を使用します。 - (各ジョブは、生産中を通過する段階)linqでグループ化せずに新しいオブジェクトを選択しますか?

はORDER - (私は顧客の名前を取得する場所です)

JOBS(日、完了日、ジョブを開始

STAGE:ここでは3つのテーブルがあります番号、モデル)

ほとんどの情報はJOBSテーブルからのものです。しかし、私は顧客番号を取得するためにジョブ番号(JobNum)でORDERテーブルに参加しています。クエリは次のようになります。私は私のviewmodelsの一つにそれを翻訳してみました前に、SQLでそれを作成した。この時点で

var CompletedTrucksQuery = 
    (from FA in context.JOBS 
    join ORD  in context.ORDER on FA.ORGANIZATION_ID equals ORD.ORGANIZATION_ID 
    where FA.ORDER_NUMBER == ORD.ORDER_NUMBER 
    join StageF  in context.STAGE on FA.JobNum  equals StageF.JobNum 
    where StageF.StageID == 325 
    join TruckComp in context.STAGE on FA.JobNum  equals TruckComp.JobNum 
    where TruckComp.StageID == 327 
    join INSP  in context.STAGE on FA.JobNum  equals INSP.JobNum 
    where INSP.StageID  == 487 
    orderby StageF.CompDate descending, FA.JobNum ascending 
    select new {FA.JobNum, FA.StartDate, ORD.CUSTOMER_NAME, FA.MODEL_NAME, StageF.CompDate}); 

、私は(JOBSから)

ジョブ番号を選択したいよ、

開始日、

(JOBSから)製品のモデル、

お客様の名前(ORDER)から、(ジョブから)

とStageFで完成した日付(STAGEから)

私はCompJobと呼ばれるこれらのそれぞれを保持するオブジェクトを持っていて、「グループバイ」を行い、新しいCompJobを選択してプロパティを設定しようとしましたが、それをグループ化してすべてにアクセスすることはできません私が設定したいプロパティのここで私が話しているかの抜粋です:

group new {FA.JobNum, O = ORD} by StageF into grp 
             select new CompletedTruck 
             { 
              JobNum = grp.Key.JobNum, 
              StartDate = grp. //??? 
             } 

何らかの理由で、私は開始日を「検索」ができませんでしたので、あなたは、私が停止言うことができるように。私はそれが私のグループ化と関係があることを知っています。私はlinqとデータベースには一般的に非常に新しいです。

私の質問:私はビューで私のScrollViewerの中でそれを使用することができるように私は私の

ObservableCollection<CompJob> CompJobList; 

に関心のこれらの列を選択することができます最善の方法は何ですか?

+0

こんにちは、コンテキストは実際に私の仕事で会社によって作成されたカスタム 'Flavor'を使用しています...どのくらいの情報を私はあなたにそれを与えることもできません。 –

+0

ああ、エンティティへのLINQと '新しいCompletedTruckの選択'は、混乱を避けるためだけに '新しいCompJobを選択'する必要があります。 –

+0

*これらのそれぞれを保持するオブジェクトがあります。 ?すぐに 'CompJob'sを作成してください:'新しいCompJob {JobNum = FA.JobNum、...} 'などを選択してください。 –

答えて

0

お手数をおかけしていただきありがとうございます。私はこの問題を解決しました。これが私のやり方です。私は新しいCompJobオブジェクトを選択するというGert Arnoldの提案に従った。

select new CompJob {JobNum = FA.JobNum, StartDate = FA.StartDate, Customer = ORD.CUSTOMER_NAME,.....} 

と、クエリの終了時

).ToList(); 

を言った:これは、新しいオブジェクトへのクエリの各行を設定することになります。それから私は私のクエリによって返されたリストに自分のObservableCollectionを設定します。

CompJobList = CompletedTrucksQuery ; 

おかげで再び私を助けるため。私はこのすべてに新しいことを知っています!

関連する問題