将IQueryable和List组合到一个新类(类型)

时间:2014-07-18 20:14:12

标签: c# linq

我编写了一个LINQ查询,它返回一个服务列表,包括执行此服务的人员的ID(resourceID)。我需要获取此resourceID并将其用作现有方法的输入参数,该方法将返回资源详细信息的IQueryable结果集。

我需要做的是从GetResource方法(iQueryable类型)返回的部分资源详细信息,并将其添加到新类“People”的列表以及列表中的服务。即一个人可能会有多个服务。最终结果是具有来自资源结果的属性的人员列表以及由每个人执行的服务的子列表。

本质上有两种方法运行linq查询,返回不同类型的结果集,我需要将这些结果组合成一个新类型,但我只需要两个返回的字段。

我已经有一个返回服务列表的linq查询:

public class Services
{

    public string Activity { get; set; }
    public DateTime DateProvided { get; set; }
    public Int32? ResourceId { get; set; }
    public string ResourceName { get; set; }
    public string ServiceCode { get; set; }
    public string ServiceStatus { get; set; }

还有另一种方法可以返回IQueryable of Providers:

    public long EId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? ResourceId { get; set; }
    public string EmailAddress { get; set; }
  • ~50个其他领域......

我需要做的是获取服务列表,查找提供程序并将这些结果合并到这个新类(类型)中:

    public string EmailAddress { get; set; }
    public long EId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<Services> Services { get; set; }

我第一次问这里,所以如果我不清楚或者您是否需要其他详细信息,请告诉我。

提前致谢

1 个答案:

答案 0 :(得分:1)

也许像

var services = GetServices();
var providers = GetProviders();

var combined = providers.Select(x =>
new{
        EId,
        Firstname,
        Lastname,
        EmailAddress,
        Services = services.Where(
                   y=> y.ResourceId == x.ResourceId
        ).ToList()
});