Как выбрать все из данных при определенных условиях? - PullRequest
1 голос
/ 24 января 2012

Я хочу Select * из моей таблицы данных при некоторых условиях и поместить возвращаемое значение в ту же таблицу данных.

 dt = from myRow in dt.AsEnumerable()
      where !string.IsNullOrEmpty( myRow.Field<string>("name") )
      select ;

Я пытаюсь что-то вроде выше.

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Что я могу видеть из вашего кода, так это то, что вам нравится удалять все строки, где поле «Имя» пусто. Это правильно?

Результат, который вы получите, не является вашим новым датабельным. Вместо этого вы получите IEnumerable<DataRow>, содержащий все строки, которые вы хотели бы видеть.

Вместо этого вы можете отменить результаты вашего запроса linq, содержащие все, что вам не нравится, а затем просто удалить все эти данные из таблицы данных.

var rowsToDelete = dt.AsEnumerable()
                     .Where(row => String.IsNullOrEmpty(row.Field<string>("name"))
                     .ToList();

foreach(var row in rowsToDelete)
{
    dataTable.Rows.Remove(row);
}
1 голос
/ 24 января 2012

Создать новый объект с ненулевыми значениями:

DataTable dt2 = new DataTable();
dt.AsEnumerable().Where(row => !row.IsNull("name")).Select(row => { dt2.Rows.Add(row); return true; });

Удалить нулевые значения из существующего объекта:

dt.AsEnumerable().Where(row => row.IsNull("name")).Select((row, index) => { dt.Rows.RemoveAt(index); return true; });

Внести изменения в существующий объект:

dt.AsEnumerable().Where(row => row.IsNull("name")).Select((row, index) =>
{
    System.Diagnostics.Debug.WriteLine("Name in Row # " + index + " is null.");
    row["Status"] = "Disabled";
    return true;
});
...