2010-04-07 3 views
3

Je souhaite renvoyer une collection plus une seule valeur. Actuellement, j'utilise un champ pour créer une nouvelle liste en ajoutant une valeur à la liste puis en renvoyant le résultat. Existe-t-il un moyen de le faire avec une expression linq ou lambda?L'utilisation d'une expression linq ou lambda en C# renvoie une collection plus une seule valeur

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; 
    } 
} 
+1

Qu'est-ce que c'est «_chargeBreakdown»? –

+0

Vous souhaiterez peut-être retourner une collection autre que 'Liste ' - http://msdn.microsoft.com/fr-fr/library/ms182142%28VS.80%29.aspx –

+0

@Reed a ajouté le champ _chareBreakdown – ahsteele

Répondre

3

Vous pouvez utiliser une syntaxe collection initializer à la place:

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

Si vous changez le type de propriété à IEnumerable<ChargeDetail> que vous pourriez faire:

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

Ce qui pourrait être plus simple selon la façon dont les clients utilisent la classe (par exemple si elle ne fait que parcourir la collection). Ils peuvent toujours appeler ToList s'ils ont besoin de manipuler une liste.

Questions connexes