更改数据表中的行位置或移动数据表中的行

Sta*_*ace 2 c# datatable ado.net dataset

我有一个必须排序的DataTable,但是即使在对DataTable排序之后,我也想返回特定的行作为最后一行。我将通过单列中的字符串值来标识此行。

  public DataTable StandardReport3B(string missionId, string reportType, string startDate, string endDate)
    {
        List<long> missionIdList = new List<long>();
        string[] missionIds = missionId.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

        foreach (string mission in missionIds)
        {
            missionIdList.Add(Convert.ToInt64(mission));
        }

        DataTable dt = new DataTable();
        object reportData = null;

        using (var ctx = new MedicalServiceEntities())
        {
            reportData = ctx.GetData(startDate, endDate, missionId).ToList();
        }

        dt = this.GenericListToDataTable(reportData);

        DataView dv = dt.DefaultView;
        dv.Sort = dt.Columns[0].ColumnName + " Asc";
        return dv.ToTable();
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

您可以使用LINQ-to-DataSet

dt = dt.AsEnumerable()
    .OrderBy(r => r.Field<string>(0) == "Special Value")
    .ThenBy(r => r.Field<string>(0))
    .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

之所以可行,是因为比较结果返回或true或为“较低”。falsefalse


如果有人只是想知道如何将表中的行移动到另一个索引,如标题所示:将数据行添加到预定义索引的数据表中