【发布时间】:2010-09-16 21:45:30
【问题描述】:
我在这里遇到了心理障碍,我希望我遗漏了一些明显的东西。
无论如何,假设我有一个如下所示的表格:
ID 查找值排序顺序 ============================================ 1 个 1000 2 B 2000 3 B 2000 4 C 3000 5℃ 4000我正在尝试使用 Linq 查找 LookupValue 相同但排序顺序不同的位置(ID 是我的数据库表上的一个 PK,与本练习无关)。
我认为最简单的方法是按LookupValue 和SortOrder 分组,然后找到LookupValue 在结果中出现两次以上的位置。
现在,我获取分组表的代码如下所示:
Dim KeySortPairs = From d In MyDataTable _
Group By Key = d(LookupValue).ToString(), SortOrder = d(SortOrder).ToString() _
Into Group _
Select Key, SortOrder
查看调试输出,上面的代码产生了这个结果(这是正确的):
键排序顺序 ================= 一个1000 B 2000 C 3000 C 4000为了得到重复的Key,我正在查看这样的结果:
For Each Entry In KeySortPairs.Where(Function(t) t.Key.Count() > 1)
'Multiple Sort Orders!!'
Next
然而,在此代码中,返回分组结果中的每个条目。我是否遗漏了什么,或者不应该只给我Key 出现多次的条目?我认为我犯了一个小错误,因为我对 VB.NET 的舒适度很低,但我想不通——我已经尝试将 Count() 移动到 Linq 上的 WHERE 子句中表达,但这给了我同样的东西。
【问题讨论】: