C# LINQ Join两个表连接

sqlserver两个表连接查询一般情况:

select  a.* from [dbo].[table] a
join  [dbo].[table] b on a.ID=b.ID

如果在代码里面进行两个集合联查呢,代码如下:

void Main()
{

Student student1 = new Student();
student1.ID = 1;
student1.Name = "John";
student1.Age = 18;
student1.Grade = 12;


Student student2 = new Student();
student2.ID = 2;
student2.Name = "Emily";
student2.Age = 17;
student2.Grade = 11;
List<Student> studentsOne = new List<Student>();
studentsOne.Add(student2);

List<Student> studentsTwo = new List<Student>();
studentsTwo.Add(student1);
studentsTwo.Add(student2);

var listStu=	from u in studentsOne
	join t in studentsTwo
 on  u.Age equals  t.Age
	select u;
	Console.WriteLine($"name: {listStu.First().Age}  age: {listStu.First().Name}");
Console.WriteLine(listStu.Count());

}

public class Student { 
	public int ID { get; set; }	
	
	public string Name{ get; set; }
	
	public int Age { get; set; }
	
	public int Grade { get; set; }
	
	public DateTime? Birthday { get; set; }
}

上面代码是通过单个条件的,如果是通过多个条件的如下

var listStu1 = from u in studentsOne
                   join t in studentsTwo
                on new { u.Age, u.Birthday } equals new {t.Age,t.Birthday}
                  select u;

下面推荐一种是通过方法组写法实现,这种功能更加强大

var result = studentsOne.Join( studentsTwo, o1 => o1.Age , o2 => o2.Age, (o1, o2) => o1 );

  • o1和o2分别代表studentsOne和studentsTwo中的每个元素。
  • (o1, o2) => o1是一个Lambda表达式,表示将o1作为结果集合的元素。
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值