2010-09-20 13 views
14

Czy jest możliwe dodanie nowego wiersza do datatable w języku C# za pomocą tylko 1 linii kodu? Ja tylko dummying jakieś dane na badanie i wydaje się dość powoli, aby napisać coś takiego:Jak dodać nowy wiersz do C# DataTable w 1 linii kodu?

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); 

byłem zakładając, można zrobić coś jak poniżej kod, ale nie mogę znaleźć poprawna składnia.

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

I tak wiem, że w tym czasie wziąłem napisać to pytanie mógłbym zakończeniu kodowania mu długą drogę zamiast zwlekać o tym :)

Dzięki!

Odpowiedz

19

Tak, można wykonać następujące czynności:

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

Nie trzeba tworzyć tablicy. Przyjmuje już argument macierzy 'params'. –

+0

@ Pierre-Alain Vigeant - ahah Widzę! Mogę po prostu przejść 'dt.Rows.Add (" Sydney ");' – JumpingJezza

3

Jeśli robisz to dla testów jednostkowych, dlaczego nie wystarczy użyć metody pomocnika, albo w jakimś statycznym klasy, albo jeszcze lepiej klasy bazowej testu ?

Mam wszystkie klasy testowe dziedziczące z klasy TestBase, gdzie mogę dodawać rzeczy, aby pomóc we wszystkich testach.

np

[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); 
    } 
} 

Następnie w klasie testu:

[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); 
    } 
} 

Naszym celem jest, aby zachować swój kod testowy minimalne i zmniejszyć nadmiarową kod (aby nie być suchy).

HTH

+0

Ah teraz, jeśli robiłem to poprawnie i używając testów jednostkowych, to byłaby to droga. – JumpingJezza

+0

@JumpingJezza - przeczytałem stwierdzenie "Po prostu próbuję pobrać pewne dane do testu", tak jak TWÓJ TWÓRCZE wykonałeś testy jednostkowe. – RPM1984

+0

Przepraszam, że wprowadzam w błąd, ale po prostu wyciągam kod z głównego projektu i tworzę nowy projekt, aby przetestować jakąś konkretną funkcjonalność, zamiast właściwego sposobu tworzenia testów jednostkowych. :) – JumpingJezza

2

Innym sposobem byłoby dokonać funkcja pomocnika to zrobić:

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 = new 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"); 
Powiązane problemy