[英]Linq - get objects with a list property that does not contain values in another list
[英]LINQ Query - Find objects in a list who's lists contain objects with a certain property
我有这个结构有两个属性:
public struct RoomExit
{
public RoomExitType Type;
public bool isOccupied;
}
这个房间 object 可以有多个RoomExit
结构:
public class Room : MonoBehaviour
{
public List<RoomExit> Exits;
}
在单独的 class 中,我有一个 Room 对象列表:
public class LevelGenerator : MonoBehaviour
{
public List<GameObject> Rooms;
}
我想设计一个 LINQ 查询,该查询在List<GameObject> Rooms
列表中搜索具有特定类型的Exits
列表中的RoomExit
的 Room 对象(比如说 RoomExitType.A)。 我认为这称为子查询,但我不确定。
这是我到目前为止所拥有的:
List<GameObject> SelectedRooms = Rooms.Where(x => x.GetComponent<Room>().Exits.Contains(???))
我不明白如何设计查询的下一部分,该部分试图查看 Exits 列表中的一个结构是否具有等于 RoomExitType.A 的 RoomExitType。 这是我正在尝试做的视觉示意图:
var query = Rooms.Where(room => room.Exits.Any(e => e.Type == RoomExitType.C))
您正在寻找Any()
LINQ 运算符:
RoomExitType selectedType = RoomExitType.A; // Or RoomExitType.C or whatever
List<GameObject> SelectedRooms = Rooms
.Where(x => x.GetComponent<Room>().Exits.Any(e => e.Type == selectedType)
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.