首页 > 其他分享 >字符串的应用---合并

字符串的应用---合并

时间:2024-06-04 15:47:46浏览次数:14  
标签:EmployeeId 合并 --- var 序列 字符串 new Id Name

准备:

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.");
}
}

 

标签:EmployeeId,合并,---,var,序列,字符串,new,Id,Name
From: https://www.cnblogs.com/apple-hu/p/18230934

相关文章

  • Python---PyQT5水平垂直布局
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2if__name__=='__main__':app=QtWidgets.QApplication(sys.argv)main_win=QtWidgets.QMainWindow()main_win.setWindowTitle("QLabel图像显示演示"......
  • Python---PyQT5之QPushButton
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)select_btn=QtWidgets.QPushButton("......
  • FreeRTOS-队列基础
    以下内容为个人的初学记录,如有错误,欢迎指正一、概述队列用于数据的传输,数据按照**“先进先出”**(FIFO)的规则;一般情况下,数据被放入到底部(Back)指向的位置(除非使用向头部写入数据的函数),被头部(Front)指向时被读出队列能够进行阻塞、唤醒,当接收任务发现队列为空时,会进入阻塞而......
  • uniapp uni-popup弹窗出现禁止底部页面页面滚动
    介绍|uni-app官网(dcloud.net.cn)为兼容各端,事件需使用@的方式绑定,请勿使用小程序端的bind和catch进行事件绑定;也不能在JS中使用event.preventDefault()和event.stopPropagation()方法;若需要禁止蒙版下的页面滚动,可使用@touchmove.stop.prevent="moveHandle",moveHa......
  • 字符函数和字符串函数
    目录1.字符分类函数2.字符转换函数3.strlen的使用和模拟实现4.strcpy的使⽤和模拟实现5.strcat的使用和模拟实现 6.strcmp的使用和模拟实现7. strncpy函数的使用8.strncat函数的使用9.strncmp函数的使用10.strstr的使用和模拟实现11.strtok函数的......
  • python09 字符串切片
    字符串切片'''字符串切片(字符串截取)语法:[start:stop:step]1.start=>开始索引默认:02.stop=>结束索引,不包括stop默认:到最后3.step=>步长默认:1三个都有默认值,但注意不能一个都不写。text="hello,python"索引:0:h1:e2:l3:l4:o5:,6:p7:......
  • 【TPAMI-2024】EfficientTrain++帮你降低网络训练的成本
    写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!文章目录前言论文更容易学习的模式:频域易于学习的模式:空间域统一的训练课程EFFICIENTTRAIN++计算约束的顺序搜索高效低频下采样EfficientTrain++的实现技术实验......
  • vue3 实现自定义指令封装 --- 通俗易懂
    1、局部自定义指令1.1 在<scriptsetup>定义组件内的指令,任何以v开头的驼峰式命名的变量都可以被用作一个自定义指令<template><div><h3>使用自定义指令</h3><div>##########################start局部自定义指令</div><div>我是一个input:......
  • P5663 [CSP-J2019] 加工零件
    原题链接题解请仔细读题!!!如果1号工人需要提供原材料,那么代表\(a_i\to1\)存在一条长度为\(L_i\)的路径(可以重复走)由于重复走不会改变路径长度的奇偶性,所以一定存在一条奇偶性相同,且长度小于\(L_i\)的路径,所以只要求从点1出发到各个点奇偶最短路即可code#include<bits/......
  • QNX-19—QNX绑核优先级-1-理论
    一、Threadaffinity翻译翻译:QNXSoftwareDevelopmentPlatform-->Programming-->Programmer'sGuide-->MulticoreProcessing-->Theimpactofmulticorehttps://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.prog/topic/multico......