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.
精彩评论