首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

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

如何查询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))

热点排行