之前lambda用的不多,但是lambda表达式确实很好用,今天写了个示例,简单的用一下Join。
新建三个类,UserPhone还有一个查询的结果UserDto

 class User{public int Id { get; set; }public string Name { get; set; }public string Gender { get; set; }}
 class Phone{public int UserId { get; set; }public string PhoneNumber { get; set; }public Type? Type;}
  class UserDto{public string Name { get; set; }public string Gender { get; set; }public string PhoneNumber { get; set; }public string PhoneType { get; set; }public override string ToString(){return string.Format("Name={0},Gender={1},PhoneNumber={2},PhoneType={3}", Name, Gender, PhoneNumber, PhoneType);}}

还有一个枚举

  enum Type{联通=1,移动=2,电信=3}

然后是需要初始化一些值。

 List<User> users = new List<User>() {new User{Id=1, Name="张三", Gender="男" },new User{Id=2, Name="李四",Gender="男"},new User{Id=3, Name="王五",Gender="男" },new User{Id=4, Name="赵柳",Gender="女" },new User{Id=5, Name="钱七",Gender="男" }};List<Phone> phones = new List<Phone>() {new Phone{ UserId=1, PhoneNumber="13000000000", Type=Type.电信 },new Phone{ UserId=2, PhoneNumber="13000000001", Type=Type.联通 },new Phone{ UserId=3, PhoneNumber="13000000002", Type=Type.移动 },new Phone{ UserId=4, PhoneNumber="13000000003", Type=Type.电信 },};

好了,准备工作做好了,接下来lambda就该登场了,由于类属性比较简单,所以查询也比较简单,具体的使用还要结合具体的业务场景。

Question one:查询用联通用户的姓名,性别,手机号,电话类型

  //查询用联通手机号的用户的姓名,性别,手机号,电话类型
var userdto = users.Join(phones, t => t.Id, p => p.UserId, (t, p) => new UserDto {Name = t.Name,Gender = t.Gender,PhoneNumber = p.PhoneNumber,PhoneType = p.Type.ToString()}).Where(t => t.PhoneType == "联通");

简单说一下Join,Join的前三个参数分别表示,需要连接的另一个数据集,以及两个表相互关联的属性,我这里明显User下的IdPhone下的UserId是对应的,类型一定要是一样的,不然会报编译错误。这里相当于是把两个数据集按照IdUserId的对应关系放到UserDto中,然后在UserDto中进行查询。

Question two:查询张三的姓名,性别,手机号,电话类型

 //查询张三的姓名,性别,手机号,电话类型
var userdto1 = users.Where(t=>t.Name=="张三").Join(phones, t => t.Id, p => p.UserId, (t, p) => new UserDto
{Name = t.Name,Gender = t.Gender,PhoneNumber = p.PhoneNumber,PhoneType = p.Type.ToString()
});

先查询User然后连接Phone
这里只是一点简单的使用,熟悉下Join以及lambda表达式的用法。
完整代码如下,可以新建个控制台应用程序,直接粘过去就行。

using System;
using System.Collections.Generic;
using System.Linq;namespace lambda多表联合查询
{class Program{static void Main(string[] args){List<User> users = new List<User>() {new User{Id=1, Name="张三", Gender="男" },new User{Id=2, Name="李四",Gender="男"},new User{Id=3, Name="王五",Gender="男" },new User{Id=4, Name="赵柳",Gender="女" },new User{Id=5, Name="钱七",Gender="男" }};List<Phone> phones = new List<Phone>() {new Phone{ UserId=1, PhoneNumber="13000000000", Type=Type.电信 },new Phone{ UserId=2, PhoneNumber="13000000001", Type=Type.联通 },new Phone{ UserId=3, PhoneNumber="13000000002", Type=Type.移动 },new Phone{ UserId=4, PhoneNumber="13000000003", Type=Type.电信 },};//查询用联通手机号的用户的姓名,性别,手机号,电话类型var userdto = users.Join(phones, t => t.Id, p => p.UserId, (t, p) => new UserDto {Name = t.Name,Gender = t.Gender,PhoneNumber = p.PhoneNumber,PhoneType = p.Type.ToString()}).Where(t => t.PhoneType == "联通");//查询张三的姓名,性别,手机号,电话类型var userdto1 = users.Where(t=>t.Name=="张三").Join(phones, t => t.Id, p => p.UserId, (t, p) => new UserDto{Name = t.Name,Gender = t.Gender,PhoneNumber = p.PhoneNumber,PhoneType = p.Type.ToString()});foreach (var item in userdto){Console.WriteLine(item.ToString());}Console.ReadKey();}}class User{public int Id { get; set; }public string Name { get; set; }public string Gender { get; set; }}class Phone{public int UserId { get; set; }public string PhoneNumber { get; set; }public Type? Type;}enum Type{联通=1,移动=2,电信=3}class UserDto{public string Name { get; set; }public string Gender { get; set; }public string PhoneNumber { get; set; }public string PhoneType { get; set; }public override string ToString(){return string.Format("Name={0},Gender={1},PhoneNumber={2},PhoneType={3}", Name, Gender, PhoneNumber, PhoneType);}}
}

lambda多表联合查询相关推荐

  1. oracle主从关系表查询,Oracle 主从表联合查询解决方法

    Oracle 主从表联合查询 表A id   type   name 1    E      AA 2    F 表B id   Aid    name 1    2      BB 2    2   ...

  2. ormlite 多表联合查询

    ormlite 多表联合查询 QueryBuilder shopBrandQueryBuilder = shopBrandDao.queryBuilder(); QueryBuilder shopQu ...

  3. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解

    sqlserver多表联合查询和多表分页查询的代码讲解 发布时间:2020-05-14 14:42:07 来源:亿速云 阅读:700 作者:Leah 这篇文章主要为大家详细介绍了sqlserver多表 ...

  4. 第四篇:Mysql查询-多表联合查询-及子查询

    mysql查询语句 多表联合查询 几子查询 1,单表查询:select * from 表名; eg:  select * from t1; 2,按条件查询: select 字段1,字段2,字段n... ...

  5. 【SQL】SQL语句多表联合查询

    SQL语句多表联合查询 CREATE TABLE orders( id int not null primary key identity(1,1), customerName varchar(100 ...

  6. 多表联合查询存储过程

    多表联合查询存储过程,@doCount为1时返回查询总数. ------------------------------------ --支持任意排序的分页存储过程 --魏金梁 ----------- ...

  7. mysql教程详解之多表联合查询,MYSQL教程mysql多表联合查询返回一张表的内容实现代码...

    搜索热词 <MysqL教程MysqL多表联合查询返回一张表的内容实现代码>要点: 本文介绍了MysqL教程MysqL多表联合查询返回一张表的内容实现代码,希望对您有用.如果有疑问,可以联系 ...

  8. MyBatis 多表联合查询及优化

    关于优化 对于优化嘛,我这里简单的提几点,大家可以考虑一下.首先,就是对表的设计,在设计表初期,不仅仅要考虑到数据库的规范性,还好考虑到所谓的业务,以及对性能的影响,比如,如果从规范性角度考虑的话,可 ...

  9. MyBatis框架 多表联合查询实现

    三种方式: ①业务装配 对两个表编写单表查询语句,在业务层(Serivce)把查询的两个结果进行关联 ②使用Auto Mapping特性 在实现两表联合查询时通过别名完成映射,使用Maybatis的& ...

最新文章

  1. linux 文件访问控制 特殊权限 suid,sgid,sbit
  2. [原创] 为Visio添加公式编辑器工具栏按钮
  3. python计算3j系数_python数值基础知识浅析
  4. swift开发体验,论objective-c与swift的选择
  5. php rabbitmq 封装,PHP rabbitmq扩展安装
  6. python自加1_python中有自增
  7. 趣图:程序员的 5 个职业生涯阶段,你处于在哪个阶段呢
  8. java笔记--关于int和byte[]的转换
  9. 硬盘可以分为几类,监控专用硬盘和普通硬盘有什么区别?
  10. python构造icmp数据包_python – 在scapy中发送ICMP数据包并选择正确的接口
  11. 机器学习项目失败最大的原因的有这7种,你认同吗?
  12. VHD 多系统安装 无需分区 无需U盘 无需任何第三方工具
  13. ibm服务器开机显示如何设置,IBM服务器开机进入WEBBIOS界面配置RAID
  14. 马云重构阿里:或分拆成30家公司 整合3家上市
  15. ubuntu 命令卡住_安装Win10和Ubuntu双系统
  16. AP计算机科学第12版5-6章参考答案
  17. 来看看今日的软件分享
  18. 【总结】初创公司用AWS搭建高扩展性架构
  19. 数据库系统之:关系代数详解-超详细
  20. 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。合数(Composite number)是与质数对应的概念,在大于1

热门文章

  1. 笔记本电脑u盘装linux系统,笔记本电脑安装linux桌面版
  2. 取石子游戏系列(1)
  3. 网上订火车卧铺票的经历
  4. 【QQ自由幻想】这样的女人不能要!(色即是空另类版)
  5. C++学习笔记【类和对象】【构造函数和析构函数】
  6. 决胜Spark大数据时代企业级最佳实践:Spark CoreSpark SQLGraphXMachine LearningBest Practice
  7. Woody的逻辑游戏--几个天使
  8. 手把手教你测——上网快鸟
  9. http://www.hltm.cc/ 红旅网 火影下载
  10. 面向对象的三个基本特征是:封装、继承、多态及其五大原则