Обновить DataTable в C # без использования цикла? - PullRequest
9 голосов
/ 21 мая 2011

Предположим, в моей таблице данных есть три столбца

  1. код

  2. имя

  3. color

Если я знаю код и имя, как я могу обновить цвет той конкретной строки, код и имя которой соответствуют моим критериям?Я хочу сделать это без использования циклов!

Ответы [ 4 ]

14 голосов
/ 21 мая 2011

Вы можете использовать LINQ:

DataRow dr = datatable.AsEnumerable().Where(r => ((string)r["code"]).Equals(someCode) && ((string)r["name"]).Equals(someName)).First();
dr["color"] = someColor;

Конечно, я предполагаю, что все эти критерии являются строками.Вы должны изменить приведение к правильным типам.

12 голосов
/ 21 мая 2011
// Use the Select method to find all rows matching the name and code.
DataRow[] rows = myDataTable.Select("name 'nameValue' AND code = 'codeValue');

for(int i = 0; i < rows.Length; i ++)
{
      rows[i]["color"] = colorValue;
}
5 голосов
/ 27 июля 2012
DataTable recTable = new DataTable();

// do stuff to populate table

recTable.Select(string.Format("[code] = '{0}' and [name] = '{1}'", someCode, someName)).ToList<DataRow>().ForEach(r => r["Color"] = colorValue);
0 голосов
/ 21 мая 2011

Вы можете сделать:

 foreach (DataRow row in datatable.Rows)
        {
            if(row["code"].ToString() == someCode && row["name"].ToString() == someName)

              {
                  row["color"] = someColor;
              }


        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...