C# 过滤后从两个列表中选择列

C# 过滤后从两个列表中选择列,c#,linq,C#,Linq,我当前有以下Linq查询: var clientsToPull = parameters.Where(x => providers.Select(y => x.ClientGuid).Contains(x.ClientGuid)) .GroupBy(x => x.ClientGuid) .Select(y => new ClientsToPull { ClientGuid = y.Key, Start

我当前有以下Linq查询:

    var clientsToPull =
        parameters.Where(x => providers.Select(y => x.ClientGuid).Contains(x.ClientGuid))
            .GroupBy(x => x.ClientGuid)
            .Select(y => new ClientsToPull { ClientGuid = y.Key, StartDate = y.Min(c => c.FromDate)});
这意味着首先检查参数列表,以确保提供者列表中存在客户端guid。然后,它将参数列表上的clientGuid分组,并选择clientGuid和min StartDate

我的问题是,我还需要从提供者列表中选择一些列,例如用户名。我到底要怎么做?可以在1个linq语句中执行此操作,还是必须在2个单独的语句中执行此操作

public class Providers
{
public Guid ClientGuid {get; set;},
public string UserName {get; set;},
public string Password {get; set;}
}

public class Parameters
{
public Guid ClientGuid {get; set;},
public string StartDate {get; set;}
}

您可以在一条语句中执行此操作,使用
Join
参数
提供者
以及两者的项目信息相匹配。e、 g

var providers = new List<Providers>()
{
    new Providers() { ClientGuid = Guid.NewGuid(), UserName = "A", Password = "B" },
    new Providers() { ClientGuid = Guid.NewGuid(), UserName = "B", Password = "C" },
};

var parameters = new List<Parameters>()
{
    new Parameters() { ClientGuid = providers.First().ClientGuid, StartDate = "C" },
    new Parameters() { ClientGuid = providers.First().ClientGuid, StartDate = "B" },
    new Parameters() { ClientGuid = providers.Take(2).Last().ClientGuid, StartDate = "Tomorrow!" },
    new Parameters() { ClientGuid = Guid.NewGuid(), StartDate = "Last year" },
};

var result = parameters
    .GroupBy(a => a.ClientGuid, a => a)
    .Join(
        providers,
        parameterGroup => parameterGroup.Key,
        provider => provider.ClientGuid,
        (parameterGroup, provider) => new { provider.ClientGuid, provider.UserName, MinStartDate = parameterGroup.Min(groupMember => groupMember.StartDate) });
var providers=新列表()
{
新提供程序(){ClientGuid=Guid.NewGuid(),UserName=“A”,Password=“B”},
新提供程序(){ClientGuid=Guid.NewGuid(),UserName=“B”,Password=“C”},
};
var参数=新列表()
{
新参数(){ClientGuid=providers.First().ClientGuid,StartDate=“C”},
新参数(){ClientGuid=providers.First().ClientGuid,StartDate=“B”},
新参数(){ClientGuid=providers.Take(2).Last().ClientGuid,StartDate=“明天!”,
新参数(){ClientGuid=Guid.NewGuid(),StartDate=“去年”},
};
var结果=参数
.GroupBy(a=>a.ClientGuid,a=>a)
.加入(
提供者,
parameterGroup=>parameterGroup.Key,
provider=>provider.ClientGuid,
(parameterGroup,provider)=>new{provider.ClientGuid,provider.UserName,MinStartDate=parameterGroup.Min(groupMember=>groupMember.StartDate)});

客户端GUID
用户名
之间是否存在任何关系?我的意思是,每个用户只有1个ClientGuid类似的名称?向我们显示参数和提供程序声明您可以在筛选了分组后选择它。1个ClientGuid对应多个UserName/pw