字符串的应用---合并

news/2025/3/22 2:11:26/文章来源:https://www.cnblogs.com/apple-hu/p/18230934

准备:

public class Employee

{
public int Id { get; set; }
public string Name { get; set; }
public double Salary { get; set; }
}
public class Seat
{
public int Id { get; set; }
public double Cost { get; set; }
}
public class Badge
{
public int EmployeeId { get; set; }
public int BadgeNumber { get; set; }
}

var employees = new List<Employee>
{
new Employee { Id = 13, Name = "John Doe", Salary = 13482.50 },
new Employee { Id = 42, Name = "Sue Smith", Salary = 98234.13 },
new Employee { Id = 99, Name = "Jane Doe", Salary = 32421.12 }
};
var seats = new List<Seat>
{
new Seat { Id = 1, Cost = 42 },
new Seat { Id = 2, Cost = 42 },
new Seat { Id = 3, Cost = 100 },
new Seat { Id = 4, Cost = 100 },
new Seat { Id = 5, Cost = 125 },
new Seat { Id = 6, Cost = 125 },
};

var badges = new List<Badge>
{
new Badge { EmployeeId = 10, BadgeNumber = 1 },
new Badge { EmployeeId = 13, BadgeNumber = 2 },
new Badge { EmployeeId = 20, BadgeNumber = 3 },
new Badge { EmployeeId = 25, BadgeNumber = 4 },
new Badge { EmployeeId = 42, BadgeNumber = 5 },
new Badge { EmployeeId = 10, BadgeNumber = 6 },
new Badge { EmployeeId = 13, BadgeNumber = 7 },
};

 

var healthFoods = new List<string> { "fruits", "vegetables", "grains", "proteins" };
var myFoods = new List<string> { "grains", "proteins", "M&Ms", "soda" };

//1. Concat() – 串联序列 最简单的序列合并,concat仅仅是将第二个序列接在第一个序列后面, 注意:返回的序列并没有改变原来元素的顺序
var healthyFirst1 = healthFoods.Concat(myFoods); // 返回序列: fruits, vegetables, grains, proteins, grains, proteins, M&Ms, soda
var mineFirst1 = myFoods.Concat(healthFoods);// 返回序列: grains, proteins, M&Ms, soda, fruits, vegetables, grains, proteins


//2. Union() – 无重复项的串联序列(去重)
//该方法用于结合两个没有重复项的集合,也非常适用于任何两个序列。 它将第二个序列结合到第一个序列里,

//当第二个序列中出现与第一个序列重复的项时,它只保留第一序列的项目。
var healthyFirst2 = healthFoods.Union(myFoods); // 返回序列: fruits, vegetables, grains, proteins, M&Ms, soda

var mineFirst2 = myFoods.Union(healthFoods);// 返回序列: grains, proteins, M&Ms, soda, fruits, vegetables

//3.Zip() – 简单一对一的联接
//该方法针对两个不同类执行一个最简单的联接。 比如给定两个序列,它仅仅将他们的第一个项合并,
//而后将他们第二个项合并,…,一旦到达较短序列的最后一项,它就会立即停止。

var seatingAssignments = employees.Zip(seats, (e, s) => new { EmployeeId = e.Id, SeatId = s.Id, e.Name, e.Salary });
foreach (var seat in seatingAssignments)
{
Console.WriteLine("雇员: " + seat.EmployeeId + " 预约了座位 " + seat.SeatId + " " + seat.Salary);
}

//只有3笔数据,是因为employees只有3笔

 

//4. Join() – 满足条件的联接
var badgeAssignments = employees.Join(badges, e => e.Id, b => b.EmployeeId, (e, b) => new { e.Name, e.Salary, b.BadgeNumber });
foreach (var badge in badgeAssignments)
{
Console.WriteLine("Name: " + badge.Name + " has badge " + badge.BadgeNumber + " " + badge.Salary);
}

//Id要和EmployeeId相等

 

//5.GroupJoin() – 适用于一对多的条件联接
//那么,如果你有1:N的关系,你希望这些结果分类组合在一起就可以用到 GroupJoin()
var badgeAssignments1 = employees.GroupJoin(badges, e => e.Id, b => b.EmployeeId,
(e, bList) => new { Name = e.Name, Badges = bList.ToList() });
foreach (var assignment in badgeAssignments1)
{
Console.WriteLine(assignment.Name + " has badges:");
if (assignment.Badges.Count > 0)
{
foreach (var badge in assignment.Badges)
{
Console.WriteLine("\tBadge: " + badge.BadgeNumber);
}
}
else
{
Console.WriteLine("\tNo badges.");
}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/719864.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm创建项目后修改默认的app

在pycharm里面创建django项目后,会自动创建一个与项目名称相同的app,该app是可以修改的,但是修改后需要修改配置文件settings.py中的配置项ROOT_URLCONF

Apline部署K3s的Agent

介绍了在Alpine-Linux上部署K3s-Agent之前我们在Ubuntu上部署了K3s的Server节点(传送门),这次我们加入两台K3s的Agent节点搭建一个K3s的3节点工作环境。 需要准备好网络环境,确保三台VM之间是可以ping通的,设置好固定IP和主机名 实验环境的IP列表Hostname IPubuntu22 192.…

关于bandgap中极性的判断

bandgap的中运放的正负相位都有连接,且前馈系数一般相同,则需要使得负反馈系数大于正反馈系数,环路才稳定。 对于不同类型的bandgap,其正负相位一般连接不同。 https://blog.csdn.net/weixin_39889337/article/details/112767268

基于mac-vlan的网络准入控制方案

网络拓扑图如下:SW1 配置vlan 10 20 30 4000 #创建vlan interface GigabitEthernet1/0/1 #进入接口 port link-type hybrid #接口模式设为hybrid port hybrid vlan 10 20 30 4000 untagged #vlan 10 20 30 4000数据包没有tag port hybrid pvid vl…

工具:一键采集 平台:TB+PDD+JD...

电商商品数据集通常是指收集自电子商务平台的商品信息的结构化数据集合。这些数据包括但不限于商品名称、价格、描述、用户评价、分类标签、卖家信息、销售量、库存量、图片链接等。数据集可以由电商平台公开提供,也可以通过网络爬虫等技术手段获得,并且经常会用于机器学习、…

Stratix V FPGA系列:5SGXEBBR3H43I3G、5SGXEBBR1H43C2G、5SGXEBBR2H43I2G为带宽应用而打造,降低了系统成本和功耗

Stratix V GX FPGA芯片提供340K逻辑单元和集成最大12.5 Gbps传输速度的收发器Stratix V系列 Stratix V FPGA采用新的存储器体系结构,降低延时,高效实现FPGA业界最好的系统性能。Stratix V FPGA为网络设备生产商提供存储器接口解决方案,支持在互联网上迅速有效的传送视频、语…

NCHU-软件学院-232019班-23201125-罗伊鑫-第二次Blog

前言 本次Blog总结三次题目集的7-1题目的知识点、题量、难度等情况,以及写完后的错误总结和自我思考。 1.知识点 三次题目集都对于类的设计的提前规划好有着必要的需求,还有就是对于继承与多态的合理的使用。接着就是对于正则表达式的使用的检测,然后就是要有清晰的逻辑编程…

Qt开发技术:Q3D图表开发笔记(四):Q3DSurface三维曲面图颜色样式详解、Demo以及代码详解

前言qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的。  其中就包括华丽绚烂的三维图表,数据量不大的时候是可以使用的。  前面介绍了基础的q3d散点图、柱状图、三维曲面图,本片深…

斯坦福 AI 团队被曝抄袭中国大模型开源成果;Zoom 创始人谈视频会议未来丨 RTE 开发者日报 Vol.218

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

VS Studio C++设置EXE和DLL不在同一路径

VC++项目生成的exe和dll,一般都会同一个在debug或release目录下,这样可能会造成不版本的dll互相冲突的问题,需要将不同版本的dll放到不同的运行目录,让exe程序在运行时自动在指定的目录查找并加载dll。 1、将直接依赖的ConvLibc.dll及它间接依赖的dll放入到./debug/depends…

查看一个通讯端口状态

原文链接:https://blog.csdn.net/yaxiya/article/details/113613472 检查一下服务器端的端口处于什么状态,监听?连接?还是其他? 启动服务器端(端口为5000)和客户端,然后: 在windows命令行窗口下执行:C:\>netstat -aon|findstr "5000"

pdf如何转换成excel文档?这3个方法免费!

职场人士常常会遇到PDF文件格式,因为PDF便于传输且能够保持排版稳定,因此在文件分享中备受青睐。然而,PDF文件中的表格数据可能涉及到公式和函数,而PDF格式又不易编辑,这时我们就需要将其转换为Excel格式进行编辑修改。因此,掌握PDF转换成Excel的技能对职场人士来说非常有…