我有一个包含两列的表:" Source"和#34;目标"两列中有大约500K行和6K个唯一项(Double类型)。
现在,我想提取所有"来源"与#34; Target"中某些样本项目相关的项目柱:
Dim samples = (From t in table Where t.Target = 77504944 Select t.Source).ToList()
如果" Source"中存在任何这些样本,则输出并输出所有表行。列。
我第一次尝试:
Dim query = From t in table _
Where samples.All(Function(x) x.Contains(t.Source)) _
Select t.Source, t.Target
但这引起了"'包含'不是Double' Double?'。"的成员。我猜这是linq延期执行的结果。
然后我尝试了:
Dim query = From t in table _
Where samples.All(Function(x) x = t.Source) _
Select t.Source, t.Target
引发" OleDbException:表达式在查询表达式中过于复杂",假设因为它将所有匹配的样本转换为单独的条件SQL语句,并且达到了某个限制。
我想我错过了一些显而易见的事情,这确实是简单的linq查询问题,目前我无法看到。那么,在上面的示例中,如何使用第一个linq查询(samples
变量)作为下一个的量词?
我真的想知道这个问题是否适合linq,以我学习linq的方式。我可以在Python中很容易地进行这样的查询,例如:
id = 77504944
samples = [x for x, y in table if y == id]
query = [(x, y) for x, y in table if x in samples or y in samples]