首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >格式化查询以枚举两个不同的数据

格式化查询以枚举两个不同的数据
EN

Stack Overflow用户
提问于 2012-12-12 19:31:47
回答 2查看 110关注 0票数 0

我有两个数据-- sendTablerecvTable

它们都有相同的列名和列数。

“节点”"DSP名称“”总线“"IDENT”站"REF1“"REF2”"REF3“"REF4”"REF5“"REF6”"REF7“"REF8”

我需要比较这两个表,并分离出不匹配的部分,只检查第3-11列,忽略cols 1和2。

首先,我尝试删除2列,然后逐行循环,然后返回匹配和不匹配,但是这种方法的问题是,在最后确定结果时,我不再具有与该行关联的“节点”和"DSP名称“。

所以我需要一个查询帮助

这是我的尝试

代码语言:javascript
运行
复制
var samerecordQuery = from r1 in sendTable.AsEnumerable()
                      where r1.Field<int>("BUS").Equals(from r2 in recvTable.AsEnumerable() where r2.Field<int>("BUS"))   

这显然不起作用,所以我如何格式化查询以说明

代码语言:javascript
运行
复制
from r1 cols[3-11] equals r2 cols [3-11] 

一旦我有了这个,我就可以用它来取出不匹配的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-12 19:49:59

代码语言:javascript
运行
复制
var matched = 
    from s in sendTable.AsEnumerable()
    join r in recvTable.AsEnumerable() on
        new {BUS = s.Field<int>("BUS"), IDENT = s.Field<int>("IDENT"),...} equals
        new {BUS = r.Field<int>("BUS"), IDENT = r.Field<int>("IDENT"),...}
    select new {Send = s, Receive = r};

这将根据所需的任何列匹配两个表中的记录,并返回分组的匹配记录。

票数 1
EN

Stack Overflow用户

发布于 2012-12-18 14:18:10

这是我的解决办法

代码语言:javascript
运行
复制
var matched = from s in sendTable.AsEnumerable()
                     join r in recvTable.AsEnumerable() on
                     new { BUS = s.Field<int>("BUS"), 
                           IDENT = s.Field<int>("IDENT"), 
                           STATION = s.Field<int>("STATION"), 
                           REF1 = s.Field<string>("REF1"), 
                           REF2 = s.Field<string>("REF2"),
                           REF3 = s.Field<string>("REF3"),
                           REF4 = s.Field<string>("REF4"),
                           REF5 = s.Field<string>("REF5"),
                           REF6 = s.Field<string>("REF6"),
                           REF7 = s.Field<string>("REF7"),
                           REF8 = s.Field<string>("REF8") } equals
                      new { BUS = r.Field<int>("BUS"), 
                           IDENT = r.Field<int>("IDENT"), 
                           STATION = r.Field<int>("STATION"), 
                           REF1 = r.Field<string>("REF1"), 
                           REF2 = r.Field<string>("REF2"),
                           REF3 = r.Field<string>("REF3"),
                           REF4 = r.Field<string>("REF4"),
                           REF5 = r.Field<string>("REF5"),
                           REF6 = r.Field<string>("REF6"),
                           REF7 = r.Field<string>("REF7"),
                           REF8 = r.Field<string>("REF8") } 
                     select new { Send = s, Receive = r };
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13847186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档