Linq SQL选择条件第二个列表级别

时间:2015-03-12 18:01:30

标签: c# sql linq

我有三个类,带有外键的Sql。

public School  
{  
 int id;
 List<Room> Rooms;
}

public Room
{  
 int id;
 ind idSchool;
 List<Chair> Chairs;
}


pulic Chair
{
 int id;
 int idRoom; 
 int legs;
}

当我使用linq向学校发送数据库请求时,返回所有元素(每个学校都有所有房间,每个房间都有椅子)

我希望学校的房间只有三条腿的椅子。(从学校中取出所有的椅子。腿!= 3)

1 个答案:

答案 0 :(得分:2)

包含至少一间至少有一个三脚椅的房间的学校:

var filteredSchools = schools.Where(school => 
                        school.Rooms.Any(room => 
                          room.Chairs.Any(chair => chair.legs == 3)));

您提到您从数据库中获取此信息,因此要删除三脚椅子,您可以尝试这样的事情:

var chairIdsToRemove = filteredSchools.SelectMany(school => 
                                  school.Rooms.SelectMany(room => 
                                  room.Chairs.Where(chair => 
                                  chair.legs != 3).Select(chair => chair.id)))
                                .ToList();

// Remove chairs with ids in chairIdsToRemove from the database.