c# - 嵌套类的 LINQ 查询

标签 c# linq

作为 C# 和 LINQ 的新手,我对我正在尝试的特定查询的实现相当困惑。我有一组名为 Session 的特定类。该类的一个属性是另一个类ActiveConnection 的数组。每个 ActiveConnection 都包含一个 ProcessType 的枚举。

目标如下:我需要确定所述数组中的哪些 Session 对象包含带有 ProccessType.GuestActiveConnection。经过大量调整后,我得到了下面的代码(甚至无法编译)。

// 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));

这将返回 GuestActiveConnections 列表中的所有 session (这是您所说)。要完成您的代码所做的工作,您需要:

var result = sessions.Where(session => session.ActiveConnections.All(conn => conn.ProcessType != ProcessType.Guest));

关于c# - 嵌套类的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766934/

相关文章:

c# - 如何有选择地反转 Linq-to-Sql 中的排序顺序?

c# - SQL 查询 CAST 到 int + 1 到 LINQ

c# - NHibernate 为 LINQ 包含查询使用了错误的列类型(varchar 到 nvarchar)

c# - 绑定(bind)到具有指定内容的组合框

c# - 为什么我的 KendoGrid "update"参数在 Controller 中始终为空?

javascript - 使用node js连接SQL Server时出现问题?

c# - 如何为有限的代码部分使用命名空间

.net - Linq int 到 string

database - 如何使用 LINQ-To-SQL 避免内存泄漏?

c# - LINQ 按 ParentId 分组