C # - Проверить, если строка находится в DataRow - PullRequest
1 голос
/ 15 марта 2012

В основном у меня есть DataTable A (см. - http://i.imgur.com/cvTMB.png), который содержит даты с соответствующими днями.

У меня также есть другая DataTable B, которая содержит список дней, в которые розничный продавец может доставить (см. - http://i.imgur.com/fmSeg.png)

То, что я хочу сделать, это перебрать каждую строку в DataTable A, и если день находится в DataTable B, то отобразить его на экране.

Пока у меня есть этоно теперь я застрял.

    // Firstly call the stored procedure to obtain the list available delivery dates (this is basically today plus 14 days)
DataTable availableDatesRecord = new DataTable();
B2B.Data.CometB2BDB comet = new CometB2BDB();
StoredProcedure proc = comet.GetListOfAvailableDates(now);
DbDataReader reader = proc.ExecuteReader();
availableDatesRecord.Load(reader);

// Now we need to obtain the list of days we can deliver - this is all based on their postcode.
DataTable possibleDeliveryDayRecord = new DataTable();
proc = comet.GetDeliveryDatesByPostcode(postcode);
reader = proc.ExecuteReader();
possibleDeliveryDayRecord.Load(reader);

DataRow deliveryDays = possibleDeliveryDayRecord.Rows[1];


foreach (DataRow row in availableDatesRecord.Rows)
{
string deliveryDay = row["Day"].ToString();
}

Какой самый эффективный способ сделать это?

Стивен

Ответы [ 2 ]

1 голос
/ 15 марта 2012

присоединение к списку данных и данных может быть то, что вы хотите.Вы можете использовать Linq?если так, то на этот вопрос ответили здесь

если вы все еще в версии 2.0, то я бы просто сделал вложенный цикл для datarows, что-то вроде

List<string> days;
    foreach(DataRow dr in table.Rows)
      if days.Contains(dr[columnname])
        Console.WriteLine(dr[columnname]);
0 голосов
/ 15 марта 2012

Этот простой метод обеспечивает некоторые основные функции:

String [] days = {"понедельник", "вторник", "воскресенье"};

DataTable table = new DataTable();
DataColumn dc = table.Columns.Add("day",typeof(string));

table.Rows.Add(days[0]);
table.Rows.Add(days[2]);

//query
foreach(string day in days) {
    foreach(DataRow row in table.Rows) {
        if(row[dc] == day) {
            Console.WriteLine("Row {0} contains {1}",row,day);
        }
    }
    Console.WriteLine();
}
...