繁体   English   中英

LINQ 查询 - 在列表中查找包含具有特定属性的对象的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM