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作为结果集合的元素。