0

グループ化されたデータ セットに複数回出現するレコードのグループを取得しようとしています。ここでの問題は、クエリが最初のクエリからのグループ化を考慮しておらず、基本的にすべてのレコードをプルしていることです。次のように、データテーブルからデータを取得する最初のクエリがあります。

Dim eDTKBase = From eDTKData In dteDTK _
Select New With _
{ _
.eDTK_PDP_Code = eDTKData.Field(Of String)("PDP_CODE"), _`
.eDTK_PDP_Description = eDTKData.Field(Of String)("PDP_DESCRIPTION"), _
.eDTK_WB_Slave = eDTKData.Field(Of String)("WALLBOARD_OR_SLAVE"), _
.eDTK_Print_On_DAD = eDTKData.Field(Of String)("PRINT_ON_DAD"), _
.eDTK_PLI = eDTKData.Field(Of String)("COMPASS_PLI"), _
.eDTK_Dead = eDTKData.Field(Of String)("DEAD"), _
.eDTK_Instance = eDTKData.Field(Of String)("COUNTRY_INSTANCE") _
}

次に、次の LINQ クエリを使用して、eDTK_PLI、eDTK_PDP_Code フィールドによってグループ化されたレコードに対してのみ、eDTK_PDP_Code フィールドのカウントが > 1 であるレコードのみをフィルター処理しようとします。

Dim EDTKMultPDPtoPLI = From EDTK In eDTKBase _
Group By EDTK.eDTK_PLI, _
EDTK.eDTK_PDP_Code _
Into g = Group _
Where eDTK_PDP_Code.Count > 1 _
Select eDTK_PLI, _
eDTK_PDP_Code, _
eDTK_PDP_Code.Count

問題は、グループ化されたレコードだけでなく、データテーブルからのデータ セット全体を評価していることです。ここで何が間違っていますか?ありがとう。

4

1 に答える 1

1

私はいくつかの実験を行い、解決策を見つけたと思います。これは AdventureWorks を使用したコードですが、意味があると思います。

from r in (
     from s in SalesOrderHeaders
     select s.SalesPersonID,s.CustomerID
     where SalesPersonID isnot nothing)
group r by key = new with {r.SalesPersonID,r.CustomerID} into group
where group.count > 1
select key.SalesPersonID, key.CustomerID, group.count()

この結果では、顧客が特定の営業担当者に注文した回数を示しています。

RepID   CustID  Count
280     1       4
283     2       8
275     3       6
277     3       6
275     4       6
277     4       2
281     5       8

切り取られた残り

お役に立てれば

ウェイド

于 2012-12-29T20:01:11.217 に答える