0

こんにちは、私は次のクエリを取得するために最善を尽くしています:

SELECT     Client, Code, COUNT(SessionID) AS Count
FROM       dbo.vw_TrackingAppsCompleteDistinctDate
WHERE      (Date > CONVERT(DATETIME, '2012-12-01 00:00:00', 102) AND Date < CONVERT(DATETIME, '2013-01-01 00:00:00', 102))
GROUP BY   URL, Code, Client
ORDER BY   Client, Code

ASP.net で LinQ に変換されます。

これまでのところ、私は持っています:

Public Shared Function SelectByID(ByVal start_date As String, ByVal end_date As String) As vw_TrackingAppsCompleteDistinctDate
    Dim db As New MasterDataContext()
    Dim query = From r In db.vw_TrackingAppsCompleteDistinctDates Where r.Date > "1/1/2013"
    Group r By r.URL, r.Code, r.Client Into g
    Select g.All
End Function

助言がありますか?

4

2 に答える 2

1

練習用にグループ化して対応するクエリを作成しようとしていました。私はそれをテストできないので、このlinqがあなたが望んでいる結果を得るとは100%確信していません.

SQLがグループ化のorderby前または後に結果を注文するかどうかわからないため、異なる可能性があります。

var result = from record in dbo.vw_TrackingAppsCompleteDistinctDate
             where record.Date.CompareTo( new DateTime( 2012, 12, 1, 0, 0, 0 ) ) > 0
             where record.Date.CompareTo( new DateTime( 2013, 1, 1, 0, 0, 0 ) ) < 0
             group record by new { record.URL, record.Code, record.Client } into grp
             orderby grp.Key.Client, grp.Key.Code
             select new 
             {
                 Client = grp.Key.Client,
                 Code = grp.Key.Code,
                 Count = grp.Select( item => item.SessionID ).Count( )
             };
于 2013-01-10T17:15:01.873 に答える
0

SQLからLinQへのコンバーターを使用して取得しました。

Dim query = From
              Vw_TrackingAppsCompleteDistinctDates In db.vw_TrackingAppsCompleteDistinctDates
            Where
              Vw_TrackingAppsCompleteDistinctDates.Date > CDate("2012-12-01 00:00:00") 
            And Vw_TrackingAppsCompleteDistinctDates.Date < CDate("2013-01-01 00:00:00")
            Group Vw_TrackingAppsCompleteDistinctDates By
              Vw_TrackingAppsCompleteDistinctDates.URL,
              Vw_TrackingAppsCompleteDistinctDates.Code,
              Vw_TrackingAppsCompleteDistinctDates.Client
            Into g = Group
            Order By Client, Code
            Select
              Client, Code, Count = CType(g.Count(Function(p) p.SessionID <> Nothing), Int64?)
于 2013-01-10T19:37:39.493 に答える