c#SelectMany,从列表中的嵌套模型中收集信息

时间:2017-03-27 14:55:35

标签: c# linq bamboo

我正在开发一个项目,我正在尝试清理一些代码。我可以使用2行获取我需要的信息,但是我不熟悉使用SelectMany并且数字可能我看错了。所以,我想采取我的两行代码并尽可能将其转换为一行代码。

选择:我需要一个特定名称的BambooDeployModel,在示例' test'是这个变量。 然后,一旦它将我的列表缩小到特定模型,我需要选择"测试"环境名称。

以下是我的行:

List<BambooDeployModel> deployments
var q = deployments.SelectMany(b => b.environments.Where(f => f.name ==    "Test"), (b, f) => f).SelectMany(f => deployments.Where(o => o.name == test)).Distinct();
var p = q.SelectMany(b => b.environments).Where(f => f.name == "Test").Distinct();

这是模型,它只是一个基于从Bamboo收到的值的通用模型,基于我们系统中的部署。

public class BambooDeployModel
{
    public int id { get; set; }
    public GenericSetKey key { get; set; }
    public string name { get; set; }
    public GenericSetKey planKey { get; set; }
    public string description { get; set; }
    public List<Environment> environments { get; set; }
    public Operations operations { get; set; }
}
public class GenericSetKey
{
    public KeyValuePair<string, string> key { get; set; }
}
public class Environment
{
    public int id { get; set; }
    public GenericSetKey key { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public int deploymentProjectId { get; set; }
    public Operations operations { get; set; }
    public string position { get; set; }
    public string configurationState { get; set; }
}
public class Operations
{
    public bool canView { get; set; }
    public bool canEdit { get; set; }
    public bool canDelete { get; set; }
    public bool allowedToExecute { get; set; }
    public bool canExecute { get; set; }
    public bool allowedToCreateVersion { get; set; }
    public bool allowedToSetVersionStatus { get; set; }
}

0 个答案:

没有答案