0

2 つのテーブルを持つデータベースがあります。外部キーとしての広告とレコード。広告のレコードが発生する頻度を数え、昇順で並べ替える必要があります。

これを実現するには、join 句と group by 句を組み合わせて使用​​する必要があると想定しています。それは私が望むように機能していません。以下は私がこれまでに持っているコードです。

    Public Shared Function SortAdsByHitCount() As DataTable
    Dim dt As New DataTable

    Try
        Using context As New QREntities()
            Dim ads = (From advertisement In context.QRAdvertisements
                      Join record In context.QRRecords On advertisement.adId Equals record.adId
                      Select advertisement.adId, advertisement.adRedirectUrl, advertisement.adType, advertisement.adData, count = record
                      Order By AdData Ascending).ToList()

            'Dim ads = (From advertisement In context.QRAdvertisements
            '          Group advertisement.adId By advertisement.adId Into Group _
            '          Order By Group.Count() Ascending _
            '          Select Advertisement.AdRedirectUrl, Advertisement.AdType, Advertisement.AdData, Count = Group.Count()).ToList()

            'Set the column headers and their accepted data types
            dt.Columns.Add("adId", GetType(Integer))
            dt.Columns.Add("adRedirectUrl", GetType(String))
            dt.Columns.Add("adType", GetType(String))
            dt.Columns.Add("adData", GetType(String))
            dt.Columns.Add("hitCount", GetType(Integer))

            For Each a In ads
                dt.Rows.Add(a.adId, a.adRedirectUrl, a.adType, a.adData, a.Count)
            Next
        End Using
    Catch ex As Exception
        Return Nothing
    End Try

    Return dt
End Function

私は基本的に 1 つのテーブルから 4 行が必要で、もう一方のテーブルからの出現回数を含めるだけです。広告データ行は、レコード テーブルで何回表されたかを認識している必要があります。基本的に、グリッドビュー/リストビューは、広告が使用された頻度でソートされた広告のリストをユーザーに表示します。

例: 広告

Ad id   Ad Type         Ad Date          Ad Occurrence

1       Automotive      13/12/2012       10
2       Personal        10/12/2012       5
3       Retail          02/11/2012       3
4

1 に答える 1

1

.Count()ここでは、グループの拡張機能にアクセスできるように、グループ化機能を使用する必要があります。静的構文でこれを行うには、次のようになります。

Dim ads = (From advertisement In context.QRAdvertisements
                      Group Join record In context.QRRecords 
                      On advertisement.adId Equals record.adId 
                      Into records = Group
                      Select advertisement.adId, advertisement.adRedirectUrl, advertisement.adType, advertisement.adData, count = records.Count()
                      Order By AdData Ascending).ToList()
于 2012-12-13T09:58:33.757 に答える