C# 更改数据表中的行位置或移动数据表中的行
我有一个必须排序的DataTable,但是我想返回一个特定的行作为最后一行,即使在对DataTable排序之后也是如此。我将通过一个局部列中的字符串值来标识此行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
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”是一个列,除您希望最后一行外,所有行的值都相同且较低,而此行的值较高