更改DataTable中的行位置或在DataTable中移动行

时间:2014-03-07 14:18:51

标签: c# datatable ado.net dataset

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

  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();
    }

2 个答案:

答案 0 :(得分:4)

您可以使用LINQ-to-DataSet

dt = dt.AsEnumerable()
    .OrderBy(r => r.Field<string>(0) == "Special Value")
    .ThenBy(r => r.Field<string>(0))
    .CopyToDataTable();

这样做是因为比较返回truefalsefalse是“较低”。

答案 1 :(得分:0)

  

我将通过partiucular列中的字符串值识别此行。

怎么样:

dv.Sort = "ParticularColumn ASC, " + dt.Columns[0].ColumnName + " ASC">

其中“ParticularColumn”是一个列,除了您想要的最后一行之外,所有行都具有相同的低值 - 此行的值更高。