我遇到一个心理障碍在这里和我希望我失去了一些东西明显。通过LINQ的
无论如何,假设我有一个表,看起来像这样:
ID LookupValue SortOrder ============================================ 1 A 1000 2 B 2000 3 B 2000 4 C 3000 5 C 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
展望调试输出,上面的代码会产生这样的结果(这是正确的):
Key SortOrder ================ A 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
子句中,但是给了我同样的东西。
啊,呃!这解释了为什么t.Key.Count()> 7(我正在尝试的一个测试)没有返回结果! – jerhinesmith 2008-10-13 15:16:25