2009-02-28 9 views
3

ich Linq bin mit einem Array eines beliebigen Objekts in eine CSV-Liste zu konvertieren:Seltsam Linq Fehler

String.Join(",", (From item In objectArray Select item.ToString()).ToArray()) 

Dies gibt mir die seltsamen Fehler: „Range Variablennamen den Namen ein Mitglied nicht mithalten können der Klasse "Objekt". "

Ich kann um sie herum erhalten, indem Sie die Zeichenfolge in einer VB StrConv Methode Umwickeln mit einer Einstellung von „Nichts“:

String.Join(",", (From item In oArray Select StrConv(item.ToString(), VbStrConv.None)).ToArray()) 

Dies ist jedoch ein bisschen wie ein Hack scheint und Ich mag würde um es zu vermeiden.

Hat jemand irgendwelche Ideen, wenn dieses Problem auftritt, und irgendwelche besseren Möglichkeiten, um es zu umgehen?

Antwort

10

Ändern Sie Ihren Code:

String.Join(",", (From item In objectArray Select stringVal = item.ToString()).ToArray()) 

Das Problem ist, VB einen Namen für die Variable durch Select Klausel zurück gibt. Implizit wird versucht, den Namen ToString an item.ToString() zu geben, was mit der Methode ToString kollidieren wird. Um dies zu verhindern, sollten Sie explizit einen Namen angeben (stringVal in der obigen Zeile).

+1

Danke, das ist sehr hilfreich. Sehr geschätzt –