2009-06-19 6 views
3

にLINQを数えることで参加し、グループについてのヘルプが必要です:はしてクエリを変換すると、私はLINQ to SQLでこのクエリを変換する助けが必要/ SQL

select 
    rd.RouteDispatchID, 
    r.RouteNumber, 
    s.ShortDescription Status, 
    rd.DispatchDate, 
    rd.CreationDate CreatedDate, 
    e.FirstName, 
    e.LastName, 
    count(md.MachineDispatchID) NumMachines 
from 
dbo.RouteDispatch rd 
    inner join dbo.Route r on rd.RouteID = r.RouteID 
    inner join dbo.Reference s on rd.StatusCodeReferenceID = s.ReferenceID 
    inner join dbo.Employee e on rd.CreatedByEmployeeID = e.EmployeeID 
    left join dbo.MachineDispatch md on rd.RouteDispatchID = md.RouteDispatchID and md.IsSelected = 1 

ここで私がこれまで持っているものだが、私は把握することはできません/動作するように数えると私のLinqerツールができますどちらも、グループを取得する方法...これを把握することができます誰に

var query = from rd in db.RouteDispatches 
       join r in db.Routes on rd.RouteID equals r.RouteID 
       join s in db.References on new { StatusCodeReferenceID = rd.StatusCodeReferenceID } equals new { StatusCodeReferenceID = s.ReferenceID } 
       join e in db.Employees on new { CreatedByEmployeeID = rd.CreatedByEmployeeID } equals new { CreatedByEmployeeID = e.EmployeeID } 
       join md in db.MachineDispatches 
         on new { RouteDispatchID = rd.RouteDispatchID, IsSelected = true } 
        equals new { RouteDispatchID = md.RouteDispatchID, IsSelected = md.IsSelected.Value } into md_join 
       from md in md_join.DefaultIfEmpty() 
       select new RouteView { 
        RouteDispatchID = rd.RouteDispatchID, 
        RouteNumber = r.RouteNumber, 
        Status = s.ShortDescription, 
        DispatchDate = rd.DispatchDate.Value, 
        CreatedDate = rd.CreationDate.Value, 
        FirstName = e.FirstName, 
        LastName= e.LastName, 
        NumMachines = 0//.Count() 
       }; 

おかげで、私はまだそのようなを考え出すていますLINQ to SQLはと初心者です1日2〜3つの新しい質問! :)

+0

作業手に入れました。 –

+0

ちょっとクリス、私は実際にはstackoverflowの新しいので、まだ私の方法を知らない、どのように私の記事のタイトルを編集するのですか? – Justin

答えて

3

は、それはあなたが "SQLからLINQへ" を "LINQ to SQLでの" からタイトルを変更する必要があります...

var query = from rd in db.RouteDispatches 
         join r in db.Routes on rd.RouteID equals r.RouteID 
         join s in db.References on new { StatusCodeReferenceID = rd.StatusCodeReferenceID } equals new { StatusCodeReferenceID = s.ReferenceID } 
         join e in db.Employees on new { CreatedByEmployeeID = rd.CreatedByEmployeeID } equals new { CreatedByEmployeeID = e.EmployeeID } 
         join md in db.MachineDispatches 
           on new { RouteDispatchID = rd.RouteDispatchID, IsSelected = true } 
          equals new { RouteDispatchID = md.RouteDispatchID, IsSelected = md.IsSelected.Value } into md_join 
         from md in md_join.DefaultIfEmpty() 
         group new { rd, r, s, e, md } by new 
         { 
          rd.RouteDispatchID, 
          r.RouteNumber, 
          s.ShortDescription, 
          rd.DispatchDate, 
          rd.CreationDate, 
          e.FirstName, 
          e.LastName 
         } into g 
         select new RouteView 
         { 
          RouteDispatchID = (System.Int32)g.Key.RouteDispatchID, 
          RouteNumber = g.Key.RouteNumber, 
          Status = g.Key.ShortDescription, 
          DispatchDate = (System.DateTime)g.Key.DispatchDate, 
          CreatedDate = (System.DateTime)g.Key.CreationDate, 
          FirstName = g.Key.FirstName, 
          LastName = g.Key.LastName, 
          NumMachines = g.Count(), 
          TotalRecordCount = 0 
         }; 
+2

この投稿を他の人に役立てるためには、元のコードの変更点とその解決方法について述べる必要があります。ちょっと、ジャスティン! –

+0

私はSQLを2つのテーブルでLINQに変換しようとしていますが、5つのequijoinsとSELECTですべてをグループ化してCountを取得します。私の質問はここにあります:http://stackoverflow.com/q/43766663/1735836ご協力いただければ幸いです。 – Patricia

+0

それで、基本的に、最初に参加してグループに参加し、最後にRouteViewを選択しましたか?私はそれを試してみましょう。 – Patricia

関連する問題