两个不完全相同构造的数组,怎样求交集?

中文命名法 2018-04-20 10:07:41
struct 平台交易对
{
public Byte 序号;
public 所有代币 前币;
public 所有代币 后币;
}

struct 执行交易对
{
public 所有代币 前币;
public 所有代币 后币;
}

平台交易对[] 平台数组 = new 平台交易对[5]{...};
执行交易对[] 执行数组 = new 执行交易对[7]{...};
我本来用2个嵌套的遍历约10行代码才能完成。谁能帮忙用lambda表达式,一行代码从平台数组中去掉执行数组中没有的记录。相当于求一个 平台交易对.前币 = 执行交易对. 前币 && 平台交易对.后币 = 执行交易对.后币 的交集。结果的记录沿用的是 平台交易对原来的记录。
...全文
1018 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰云 2018-06-20
  • 打赏
  • 举报
回复
中文命名,真心看不下去。。。。 潜意思里总是当作注释。。。
wanghui0380 2018-06-20
  • 打赏
  • 举报
回复
求交集必须能比较,而对象比较嘛,你要么在对象上去实现比较接口。要么临时生成个比较对象 ps:1楼的代码都不见得有确定性,因为匿名对象的equals 到底equals 的是啥?
wanghui0380 2018-06-20
  • 打赏
  • 举报
回复
看看微软怎么说 https://msdn.microsoft.com/zh-cn/library/bb355408.aspx
正怒月神 2018-06-19
  • 打赏
  • 举报
回复
引用 3 楼 shawb 的回复:
能否不使用 new 关键字,因为目标构造就是原来的 平台交易对 构造。相当于一个对比后的过滤。
不太明白你的意思。#1的new只是join的比对条件而已啊
中文命名法 2018-06-19
  • 打赏
  • 举报
回复
能否不使用 new 关键字,因为目标构造就是原来的 平台交易对 构造。相当于一个对比后的过滤。
中文命名法 2018-06-19
  • 打赏
  • 举报
回复
引用 1 楼 q107770540 的回复:
This is just a inner join
学习了,能写成lambda表达式吗,继续学习。
q107770540 2018-04-21
  • 打赏
  • 举报
回复
This is just a inner join

平台交易对[] 平台数组_New = (from p in 平台数组
join z in 执行数组
on new {前币 = p.前币, 后币 = p.后币} equals
new {前币 = z.前币, 后币 = z.后币}
select p).ToArray();

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧