Wie wird die Sammlung inline gesetzt?

8

Zum Beispiel:

%Vor%     
O.O 31.01.2012, 16:52
quelle

6 Antworten

10

Sie sprechen über den Sammelinitialisierer Feature in C # 3 hinzugefügt. Es ist so gemacht:

%Vor%

Dies ruft keinen Auflistungskonstruktor auf, es verwendet die Auflistung, die bereits in der DataTable vorhanden ist.

Dies ist eine Abkürzung für Columns.Add (), so dass Spalten keinen Setter haben müssen.

Sie waren so nah mit dem Code in Ihrer Frage!

    
Buh Buh 31.01.2012, 17:20
quelle
3

Die Columns -Eigenschaft hat keinen Setter, so dass Sie nur ändern können.

Wie wäre es damit:

%Vor%

Wenn Sie mit einer Anweisung in einem Lambda arbeiten möchten:

%Vor%     
Gabe 31.01.2012 17:01
quelle
2

Wahrscheinlich müssen Sie die Klammern um den Auflistungsinitialisierer für DataColumnCollection entfernen und die nicht übereinstimmenden, endgültigen )

entfernen

Das sind jedoch syntaktische Probleme. Die zugrunde liegenden Probleme bestehen darin, dass die Columns -Eigenschaft keinen Setter hat und die DataColumnCollection keinen öffentlichen Konstruktor hat.

Grundsätzlich müssen Sie .Columns.Add() instanziieren und dann aufrufen.

Wenn dies etwas ist, was Sie in Ihrem Code tun müssen, könnten Sie Hilfsklassen erstellen, die Ihnen eine freundlichere Syntax geben würden:

%Vor%     
Jay 31.01.2012 16:59
quelle
2

Es gibt zwei Gründe, warum das nicht funktioniert:

1) Die Eigenschaft Columns ist schreibgeschützt 2) Die Klasse DataColumnCollection hat keinen Konstruktor, der eine Sammlung von Spalten akzeptiert, um sie zu initialisieren.
Am besten können Sie die Tabelle in einer Zeile erstellen und die Spalten in einer anderen Zeile hinzufügen:

%Vor%

Um Ihre andere Frage zu beantworten, IF Columns hatte einen Setter und IF DataColumnCollection akzeptierte Spalten in seinem Konstruktor würde die Syntax lauten:

%Vor%     
D Stanley 31.01.2012 17:03
quelle
1

Die Klasse DataColumnCollection hat keinen Konstruktor, so dass Sie keine Instanz manuell erstellen können. Die Fehlermeldung des Compilers sollte ziemlich selbsterklärend sein und etwas wie folgt aussagen:

  

Der Typ 'System.Data.DataColumnCollection' hat keine Konstruktoren definiert

Sie können Spalten zur Sammlung DataTable.Columns hinzufügen, indem Sie die Methode Add() verwenden:

%Vor%     
Dennis Traub 31.01.2012 17:02
quelle
1

Sie können diese Syntax nicht verwenden, da die Columns-Eigenschaft readonly ist. Ich würde die von Gabe vorgeschlagene Technik verwenden.

    
Robert 31.01.2012 17:03
quelle

Tags und Links