Ho un metodo con la seguente firma:C# - come passare 'fuori' dei parametri in espressione lambda
private PropertyInfo getPropertyForDBField(string dbField, out string prettyName)
In essa, trovo il valore associato prettyName
in base alla data dbField
. poi voglio trovare tutte le proprietà, se del caso, che hanno il nome prettyName
, quindi sto cercando di fare quanto segue:
IEnumerable<PropertyInfo> matchingProperties =
getLocalProperties().Where(prop =>
prop.Name.Equals(prettyName)
);
Tuttavia, questo dà il seguente errore:
Cannot use ref or out parameter 'prettyName' inside an anonymous method, lambda expression, or query expression
By il punto nel metodo in cui sto cercando di utilizzare prettyName
nel parametro lambda Where
, prettyName
è stato inizializzato definitivamente. I return
se prettyName
non può essere inizializzato su un valore valido. C'è qualche trucco che potrei fare qui per permettermi di usare prettyName
nell'espressione lambda?
Modifica: Sto usando .NET 3.5 se è importante.
Che ne dici di memorizzare il valore che avresti assegnato a prettyName in una variabile diversa in modo da poter eseguire 'prettyName = someval; 'quindi utilizzare' someval' nella funzione anon? –