作为 C# 和 LINQ 的新手,我对我正在尝试的特定查询的实现相当困惑。我有一组名为 Session
的特定类。该类的一个属性是另一个类ActiveConnection
的数组。每个 ActiveConnection
都包含一个 ProcessType
的枚举。
目标如下:我需要确定所述数组中的哪些 Session
对象包含带有 ProccessType.Guest
的 ActiveConnection
。经过大量调整后,我得到了下面的代码(甚至无法编译)。
// Creating my array Session[]
var sessions = GetSessions();
var busySessions = from sessions
where sessions.ActiveConnections.ProcessType != ProcessType.Guest
select sessions;
// Do other stuff with this array of busy sessions
显然,我不明白如何实现 LINQ 查询。任何帮助将不胜感激。
最佳答案
为此您需要一个嵌套查询(因为 ActiveConnections
是一个集合):
var result = sessions.Where(session => session.ActiveConnections.Any(conn => conn.ProcessType == ProcessType.Guest));
这将返回 Guest
在 ActiveConnections
列表中的所有 session (这是您所说)。要完成您的代码所做的工作,您需要:
var result = sessions.Where(session => session.ActiveConnections.All(conn => conn.ProcessType != ProcessType.Guest));
关于c# - 嵌套类的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766934/