开发者

Using a linq or lambda expression in C# return a collection plus a single value

I'd like to return a collection plus a single value. Presently I am using a field to create a new list adding a value to the list and then returning the result. Is there a way to do this with a linq or lambda expression?

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

public ChargeDetail PrimaryChargeDetail { get; set; }

public List<ChargeDetail> ChargeBreakdown
{
    get
    {
        List<ChargeDetail> result =
            new List<ChargeDetail开发者_如何学Python>(_chargeBreakdown);
        result.Add(PrimaryChargeDetail);

        return result;
    }
}


You could use a collection initializer syntax instead:

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


If you change the property type to IEnumerable<ChargeDetail> you could do:

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

Which could be simpler depending on how clients use the class (for example if they just iterate through the collection). They could always call ToList if they need to manipulate a list.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜