使用Lambda查询复杂对象

时间:2013-12-03 18:45:01

标签: c# linq lambda

我正在查询描述Shift Roster的复杂c#对象。此对象由Web服务填充,是来自第三方软件供应商的对象。

我的任务是根据第三方产品的数据构建网格视图。该对象包含嵌套在其中的大多数对象数组的其他对象。

我正在使用Lambda表达式向下导航对象,但我正在努力获取价值,我也想知道我写的表达式是否会更好。以下是我尝试获取员工姓名的一个示例:

var employeeDetails = employeeRoster.PathsRosters.SelectMany(a => a.EmployeesRosters);
                var empName = employeeDetails.Select(b => b.Resource.Name).ToList();
                foreach (string nam in empName)
                {
                    string var = nam;
                }

employeeRoster是我从Web服务返回的对象,PathRosters是一个数组。然后我再次查询结果并转发到List以获取员工姓名。

有更好的方法吗?不幸的是,我无法序列化为XML,因为我被告知必须在对象的内存中完成。

2 个答案:

答案 0 :(得分:0)

var empNames = employeeRoster.PathsRosters.SelectMany(a => a.EmployeesRosters)
     .Select(b => b.Resource.Name).ToList();

答案 1 :(得分:0)

不是进行两次调用,而是使用一次调用:

var employeeNames = employeeRoster.PathsRosters.SelectMany(a => a.EmployeesRosters)
     .Select(b => b.Resource.Name).ToList();

此外,您的foreach循环不会执行任何操作。我没有看到这一点。