读书人

怎么查询DataSet中两个Table的差集?不

发布时间: 2014-01-25 22:37:26 作者: rapoo

如何查询DataSet中两个Table的差集?不用循环
本帖最后由 pengwei0417 于 2014-01-19 21:22:50 编辑 我用Linq to DataSet是这样写的:

        Dim AID = From sfzh In Table2.AsEnumerable() Select sfzh.Field(Of String)("AID") '取得对比表中AID
Dim Resultrows = From rows In Table1.AsEnumerable() Where Not AID.Contains(rows.Field(Of String)("BID")) Select rows '查询差集


可以得到结果,但Table2中有四十余万条记录,Table1中有1000条记录,执行的速度非常慢。
如何解决?

是不是没优化好,AID和BID都是字符串。

在“数据集中两个表,这种连接查询如何使用LINQ语句?”贴中,版主caozhy最后给的:
Dim ids = Table1.Select(Function(x) x!ID).Except(Table2.Select(Function(x) x!ID)).Select(Function(x) Table1.Where(Function (y) y!ID == x))


还是不会使用?提示:Lambda 表达式无法转换为“String”,因为“String”不是委托类型。
[解决办法]
Dim ids = Table1.Select(Function(x) x!ID).Except(Table2.Select(Function(x) x!ID)).Select(Function(x) Table1.First(Function (y) y!ID == x))

读书人网 >VB Dotnet

热点推荐