私はここで精神的な障害に遭遇しています。明らかな何かが欠けていることを願っています。
とにかく、次のようなテーブルがあるとします。
ID LookupValue ソート順 ============================================ 1A1000 2 B 2000 3 B 2000 4C 3000 5C 4000
LookupValue
Linq を使用して、 が同じであるが並べ替え順序が異なる場所を見つけようとしています(ID
はデータベース テーブルの PK であり、この演習には関係ありません)。
LookupValue
最も簡単な方法は、とでグループ化し、結果で が 2 回以上出現するSortOrder
場所を見つけることだと思いました。LookupValue
現在、グループ化されたテーブルを取得するコードは次のようになります。
Dim KeySortPairs = From d In MyDataTable _
Group By Key = d(LookupValue).ToString(), SortOrder = d(SortOrder).ToString() _
Into Group _
Select Key, SortOrder
デバッグ出力を見ると、上記のコードは次の結果を生成します (これは正しいです)。
キーの並べ替え順序 ================ 1000 B2000 C3000 C4000
重複を取得するために、Key
次のような結果を調べています。
For Each Entry In KeySortPairs.Where(Function(t) t.Key.Count() > 1)
'Multiple Sort Orders!!'
Next
ただし、このコードでは、グループ化された結果のすべてのエントリが返されます。私は何かを見逃していますか、それともKey
が複数回出現するエントリだけを数えるべきではありませんか? 私は VB.NET に対する私の快適度が低いために些細な間違いを犯していると思いますが、それを理解することはできません - Linq 式Count()
の句に を移動しようとしましたが、それでWHERE
同じこと。