在C#中使用linq或lambda表达式返回一个集合加上一个值

时间:2010-04-07 22:15:34

标签: c# linq lambda

我想返回一个集合加上一个值。目前我正在使用一个字段来创建一个新列表,向列表中添加一个值,然后返回结果。有没有办法用linq或lambda表达式做到这一点?

private List<ChargeDetail> _chargeBreakdown
    = new List<ChargeDetail>();

public ChargeDetail PrimaryChargeDetail { get; set; }

public List<ChargeDetail> ChargeBreakdown
{
    get
    {
        List<ChargeDetail> result =
            new List<ChargeDetail>(_chargeBreakdown);
        result.Add(PrimaryChargeDetail);

        return result;
    }
}

2 个答案:

答案 0 :(得分:3)

您可以改为使用collection initializer语法:

public List<ChargeDetail> ChargeBreakdown
{
    get
    {
        return new List<ChargeDetail>(_chargeBreakdown) {PrimaryChargeDetail};
    }
}

答案 1 :(得分:1)

如果您将属性类型更改为IEnumerable<ChargeDetail>,则可以执行以下操作:

public IEnumerable<ChargeDetail> ChareBreakdown
{
    get { return _chargeBreakdown.Concat(new[] { PrimaryChargeDetail }); }
}

根据客户端如何使用该类(例如,如果他们只是遍历集合),这可能更简单。如果他们需要操纵列表,他们总是可以调用ToList