如何使用linq查询多个表



我是linq的新手,遇到了这样一个场景,假设我有一个id(pk)和名称的"学生"表,以及一个id(pk),地址,studId(fk),城市和城市表,城市id(pk)和城市名称。现在学生可以在"地址"表中有多个地址,我想获得所有学生的结果与多个城市(应该是一个数组)名称作为学生实体的属性之一。就像在student对象中id,name,address,city[](城市数组)。

Student.addresses = Address.Where(x => x.studId == Student.id).toList();

这或多或少是你想要做的,查询你的地址表,你匹配的学生id,然后你可以循环你的地址和选择城市,这也会给你更多的信息。

var students=db.Students.Select(s=>new {
  s.id,
  s.name,
  s.Addresses,
  Cities=s.Addresses.Select(a=>a.City.Name).ToList()
});

当然,你可以直接选择学生…

var students=db.Students
  .Include(s=>a.Addresses)
  .Include(s=>a.Addresses.City);

如果你想知道学生所在的城市,可以这样写:

foreach(var student in students)
  Console.WriteLine("{0} lives in {1}",
    student.Name,
    String.Join(", ",student.Addresses.Select(a=>a.City.Name)));

以上假设你正在使用EntityFramework,并且已经正确设置了导航属性。

相关内容

  • 没有找到相关文章

最新更新