根据条件使用lambda替换列值

时间:2014-09-02 05:43:37

标签: c# winforms lambda

使用lambda,我想根据以下条件替换datatable列item_typeitem_status的值:

  • item_type =" A"然后用" Apple"
  • 替换
  • item_type =" B"替换为" Banana"
  • 其他显示原始数据
  • item_status =" A"然后用" Apple"
  • 替换
  • item_status =" B"替换为" Banana"
  • 其他显示原始数据

command.CommandText = "select [item no], item_type, item_status from dbo.GetItems()";
command.CommandType = CommandType.Text;
da.SelectCommand = command;
da.Fill(dt);

dgItems.DataSource = dt;

我想要这样的事情:

dgItems.DataSource = dt.Select(...);

1 个答案:

答案 0 :(得分:0)

我同意,如果可能的话,在SQL代码中执行此操作以获取所需数据将是最佳选择。

回答问题:

Array.ForEach(dt.Rows.Cast<DataRow>().ToArray(),
              row =>
              {
                  if (row.Field<string>("item_type") == "A")
                      row.SetField("item_type", "Apple");
                  else if (row.Field<string>("item_type") == "B")
                      row.SetField("item_type", "Banana");

                  if (row.Field<string>("item_status") == "A")
                      row.SetField("item_status", "Apple");
                  else if (row.Field<string>("item_type") == "B")
                      row.SetField("item_status", "Banana");
              });

这将修改原始DataTable