2011-08-29 4 views
0

J'ai un datatable qui est déjà rempli. Maintenant, je veux ajouter quelques lignes à cette datatable, mais certaines lignes peuvent déjà exister dans le datatable. Je sais que c'est inutile mais c'est l'exigence.Comment ajouter des datarows à une datatable déjà existante?

J'ai essayé quelques choses et j'ai obtenu "la ligne existe déjà dans cette table: & cette rangée appartient à une autre table" .J'ai aussi essayé importRow, mais je suppose qu'il évite les doublons par dafault.

Y at-il un moyen de le faire. Si la datatable a 7 lignes et je veux ajouter 3 lignes de plus si elle existe déjà ou non. Mon but est d'envoyer 10 lignes à la fonction d'appel.

Ou y a-t-il une autre approche?

MISE À JOUR

En utilisant rowsToAdd.CopyToDataTable(dsCount.Tables[2], LoadOption.PreserveChanges); fonctionne, mais je ne suis pas sûr que c'est la bonne façon.

+0

rowsToAdd.CopyToDataTable (dsCount.Tables [2], LoadOption.PreserveChanges); Cela fonctionne, mais je ne sais pas si c'est correct de le faire – Vani

Répondre

3

Pour vérifier les doublons essayer

if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in 
the table already */ 
    continue; 
else 
    table.Row.Add(value1, value2, value3); 

Si vous voulez être en mesure d'insérer des lignes en double, mais ne veulent pas une exception levée configure votre clé primaire comme un entier auto-incrémenté unique, puis vous pouvez insérer autant de doublons que vous le souhaitez sans avoir à vérifier si la table contient cette valeur. Assurez-vous simplement qu'il suffirait d'avoir des doublons. Il existe de nombreux exemples de définition d'une clé primaire (msdn en a au moins un). Voici un exemple:

DataTable table = new DataTable(); 

table.Columns.Add("Column", typeof(int)); 

DataColumn column = table.Columns["Column"]; 
column.Unique = true; 
column.AutoIncrement = true; 
column.AutoIncrementStep = 1; //change these to whatever works for you 
column.AutoIncrementSeed = 1; 
table.PrimaryKey = new DataColumn[] { column }; 
+0

Merci pour le code. le code ci-dessous fonctionne, mais je vais essayer vos suggestions. rowsToAdd.CopyToDataTable (dsCount.Tables [2], LoadOption.PreserveChanges); – Vani

+0

Le 'table.Row.Add()' que j'ai utilisé n'est pas aussi robuste que le code ci-dessous car toutes les valeurs doivent être dans le bon ordre ou vous pouvez placer la mauvaise valeur de données dans la table mais cela devrait aider une idée est pour toi. – Trio

1

Je crois que vous pouvez utiliser la fonction NewRow() du DataTable si vous ajoutez simplement une ligne à la table.

DataTable table = new DataTable();  
DataRow row = table.NewRow(); 

table.Rows.Add(row); 

Cela ne suffira-t-il pas?

+0

Je ne pense pas qu'il ajoutera une ligne jusqu'à ce que vous appeliez explicitement la méthode 'datatable.Rows.Add' –

+0

@Haris Hasan: Vous avez raison à propos de cette partie, et J'ai mis à jour ma réponse. Je pense que ça marchera aussi longtemps qu'ils ne sont pas des contraintes uniques sur sa table, n'est-ce pas? Sûrement, il sera plus approprié qu'ImportRow pour ce que OP essaie de faire, n'est-ce pas? –

4

Vous pouvez ajouter de nouvelles lignes à l'aide du code ci-dessous DataTable

DataRow newRow = dataTable.NewRow(); 
dataTable.Rows.Add(newRow); 
3

Créer une nouvelle ligne en utilisant la fonction NewRow().

var dataTable = new DataTable(); 
var dataRow = dataTable.NewRow(); 

Alors donnez votre nouvelle ligne à votre datatable

dataTable.Rows.Add(dataRow) 
+0

@Le code ci-dessus n'ajoutera pas de lignes déjà existantes. Mon req est parfois j'ai besoin d'ajouter des lignes déjà existantes pour faire le compte. – Vani

Questions connexes