Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改数据表中的行位置或移动数据表中的行_C#_Datatable_Ado.net_Dataset - Fatal编程技术网

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

C# 更改数据表中的行位置或移动数据表中的行,c#,datatable,ado.net,dataset,C#,Datatable,Ado.net,Dataset,我有一个必须排序的DataTable,但是我想返回一个特定的行作为最后一行,即使在对DataTable排序之后也是如此。我将通过一个局部列中的字符串值来标识此行 public DataTable StandardReport3B(string missionId, string reportType, string startDate, string endDate) { List<long> missionIdList = new List<lon

我有一个必须排序的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();
    }
公共数据表StandardReport3B(字符串任务ID、字符串报告类型、字符串开始日期、字符串结束日期)
{
列表任务列表=新列表();
string[]missionId=missionId.Split(新字符[]{',},StringSplitOptions.RemoveEmptyEntries);
foreach(任务中的字符串任务)
{
任务列表添加(转换为64(任务));
}
DataTable dt=新的DataTable();
对象reportData=null;
使用(var ctx=new MedicalServiceEntities())
{
reportData=ctx.GetData(开始日期、结束日期、任务ID).ToList();
}
dt=此.GenericListToDataTable(reportData);
DataView dv=dt.DefaultView;
dv.Sort=dt.Columns[0]。ColumnName+“Asc”;
返回dv.ToTable();
}

您可以使用
LINQ到数据集

dt = dt.AsEnumerable()
    .OrderBy(r => r.Field<string>(0) == "Special Value")
    .ThenBy(r => r.Field<string>(0))
    .CopyToDataTable();
dt=dt.AsEnumerable()
.OrderBy(r=>r.Field(0)=“特殊值”)
.ThenBy(r=>r.Field(0))
.CopyToDataTable();
这是因为比较返回
true
false
,并且
false
为“低”


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

我将通过一个局部列中的字符串值来标识此行

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

dv.Sort = "ParticularColumn ASC, " + dt.Columns[0].ColumnName + " ASC">
其中“SpecificularColumn”是一个列,除您希望最后一行外,所有行的值都相同且较低,而此行的值较高