【问题标题】:How to move a DataTable row to the first position of its DataTable如何将 DataTable 行移动到其 DataTable 的第一个位置
【发布时间】:2012-11-29 07:57:25
【问题描述】:

我想在 asp.net DataTable 上获取特定行,并将其移动到基于列 column1 值的该 DataTable 上的第一行。我的数据表 dt1 是通过数据库查询填充的,而要搜索的值是通过来自另一个数据库的另一个查询,所以我不知道在 dt1 select 时间要搜索的值。

// I use this variable to search into
// DataTable
string valueToSearch = "some value";

所以我需要在column1 列的DataTable 中搜索值some value。然后将整行移动到第一个位置。

谢谢。

【问题讨论】:

  • 这个 DataTable 是如何填充的?
  • @WonkotheSane 通过数据库查询。图我有带有字符串值的column1

标签: c# asp.net linq datatable dataset


【解决方案1】:

我们必须克隆之前的行数据:

            DataRow[] dr = dtable.Select("column1 ='" + valueToSearch +"'");
            DataRow newRow = dtable.NewRow();
            // We "clone" the row
            newRow.ItemArray = dr[0].ItemArray;
            // We remove the old and insert the new
            ds.Tables[0].Rows.Remove(dr[0]);
            ds.Tables[0].Rows.InsertAt(newRow, 0);

【讨论】:

    【解决方案2】:

    您必须对此进行性能测试,但一种方法是在查询本身中进行测试。首先获取您想要在顶部的行,然后将其与其余行合并。

    由于我对您的数据库一无所知,因此这是一种通用的方法:

    SELECT Column1, Column2, Column3
    FROM MyTable
    WHERE Column1 = 'some value'
    
    UNION
    
    SELECT Column1, Column2, Column3
    FROM MyTable
    WHERE Column1 <> 'some value'
    

    【讨论】:

    • 我做不到,因为数据表的来源和要搜索的值不同,所以不知道查询时要搜索的值。
    • 在这种情况下,我认为您应该编辑您的问题以提供更多详细信息。数据表是如何填充的(包括绑定),“一些值”是如何作为过滤器输入的,等等。现在,我们都在猜测你的设计。
    【解决方案3】:

    如果该列只有一条搜索值的记录,请尝试此操作

    DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'");
    myDataTable.Rows.InsertAt(dr[0], 0);
    

    【讨论】:

    • 我不能插入它,因为它已经属于这个数据表,所以我需要先删除。
    • 看看这个。如果它有效,您不需要删除该行并再次插入它。 codeproject.com/Tips/312545/…
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 2014-10-20
    • 2019-11-12
    • 2020-06-13
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多