【问题标题】:Change row position in DataTable or move row in DataTable更改 DataTable 中的行位置或移动 DataTable 中的行
【发布时间】:2014-04-10 17:55:15
【问题描述】:

我有一个必须排序的 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();
    }

【问题讨论】:

    标签: c# datatable ado.net dataset


    【解决方案1】:

    你可以使用LINQ-to-DataSet:

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

    因为比较返回truefalsefalse 是“较低的”。


    如果有人只想知道如何将表格中的行移动到另一个索引,如标题所示:Add data row to datatable at predefined index

    【讨论】:

      【解决方案2】:

      我将通过特定列中的字符串值来识别这一行。

      怎么样:

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

      其中“ParticularColumn”是一列,除了您希望排在最后的那一行之外,所有行的值都相同,并且该行具有更高的值。

      【讨论】:

        猜你喜欢
        • 2012-11-29
        • 2020-02-04
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多