2010-09-20 18 views
14

Sadece 1 satırlık kod ile C# 'daki bir veri tabanına yeni bir satır eklemek mümkün mü? Ben sadece bir test için bazı verileri dummying ediyorum ve böyle bir şey yazmak zorunda oldukça yavaş görünüyor:1 satırlık kodda C# DataTable'a yeni bir satır nasıl eklenir?

DataTable dt= new DataTable("results"); 
DataRow dr1 = dt.NewRow(); 
dr1[0] = "Sydney"; 
dt.Rows.Add(dr1); 
DataRow dr2 = dt.NewRow(); 
dr2[0] = "Perth"; 
dt.Rows.Add(dr2); 
DataRow dr3 = dt.NewRow(); 
dr3[0] = "Darwin"; 
dt.Rows.Add(dr3); 

Ben aşağıdaki kodu gibi şeyler yapabileceğini varsayarak, ama ben bulamıyorum doğru sözdizimi.

dt.Rows.Add(dt.NewRow()[0]{"Sydney"}); 
dt.Rows.Add(dt.NewRow()[0]{"Perth"}); 
dt.Rows.Add(dt.NewRow()[0]{"Darwin"}); 

Ve evet ben zamanında ben o uzun bir yol kodlama yerine bu konuda procrastinating :)

Teşekkür Bitirdiğimde olabilirdi bu soruyu yazmak için geçtiniz biliyorum!

cevap

19

Evet, aşağıdakileri yapabilirsiniz:

dt.Rows.Add("Sydney"); 
+4

Bir dizi oluşturmanıza gerek yoktur. Zaten bir 'params' dizisi argümanını kabul ediyor. –

+0

@ Pierre-Alain Vigeant - ahah Görüyorum! Ben sadece "dt.Rows.Add (" Sydney ");' – JumpingJezza

3

Eğer Birim Testleri için bu yapıyorsanız, sadece bazı statik sınıfında ya bir yardımcı yöntemi kullanmak niçin veya daha iyisi bir test temel sınıf ?

Tüm sınama sınıfları, tüm sınamalara yardımcı olmak için bir şeyler ekleyebileceğim bir TestBase sınıfından miras alıyor. Test sınıfında Sonra

[TestClass] 
public class TestBase 
{ 
    protected void AddMockDataRow(DataTable dt) 
    { 
     DataRow dr = dt.NewRow(); 
     dr[0] = "Sydney"; // or you could generate some random string. 
     dt.Rows.Add(dr); 
    } 
} 

ör:

[TestClass] 
public class SomeTest : TestBase 
{ 
    [TestMethod] 
    public void Ensure_Something_Meets_Some_Condition() 
    { 
     // Arrange. 
     DataTable dt = new DataTable("results"); 

     // Act. 
     AddMockDataRow(dt); 

     // Assert. 
     Assert.IsTrue(someCondition); 
    } 
} 

Buradaki amaç minimum test kodunu tutmak ve (KURU olmamak) gereksiz kod azaltmaktır.

HTH

+0

Ah şimdi düzgün bir şekilde yapıyor ve Birim Testleri kullanarak gidersem bu gitmek için bir yol olurdu. – JumpingJezza

+0

@JumpingJezza - "Bir test için veri topladım" ifadesini okudum. – RPM1984

+0

sizi yanlış yönlendirdiğim için özür dilerim, ancak sadece ana projeden bazı kodları alıyorum ve belirli bir işlevselliği test etmek için yeni bir proje oluşturuyorum. :) – JumpingJezza

2

bir başka yolu, bir yardımcı işlev yapmak yapmak olacaktır:

DataTable MakeDataTable(String name, String contents) 
{ 
    DataTable dt = new DataTable(name); 
    foreach (string val in contents.Split(",")) 
    { 
    DataRow dr = dt.NewRow(); 
    dr[0] = val; 
    dt.Rows.Add(dr); 
    } 
    return dt; 
} 

MakeDataTable("results","Sydney,Perth,Darwin"); 
0

DataTable dtStudent = yeni bir DataTable();

//Add new column 
dtStudent.Columns.AddRange (
new DataColumn[] { 
new DataColumn("SlNo", typeof(int)), 
new DataColumn("RollNumber", typeof(string)), 
new DataColumn("DateOfJoin", typeof(DateTime)), 
new DataColumn("Place", typeof(string)), 
new DataColumn("Course", typeof(string)), 
new DataColumn("Remark", typeof(string)) 
} 
); 
// Add value to the related column 
dtStudent.Rows.Add(1, "10001", DateTime.Now, "Bhubaneswar", "MCA", "Good"); 
İlgili konular