我有一个必须排序的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();
}
答案 0 :(得分:4)
您可以使用LINQ-to-DataSet
:
dt = dt.AsEnumerable()
.OrderBy(r => r.Field<string>(0) == "Special Value")
.ThenBy(r => r.Field<string>(0))
.CopyToDataTable();
这样做是因为比较返回true
或false
而false
是“较低”。
答案 1 :(得分:0)
我将通过partiucular列中的字符串值识别此行。
怎么样:
dv.Sort = "ParticularColumn ASC, " + dt.Columns[0].ColumnName + " ASC">
其中“ParticularColumn”是一个列,除了您想要的最后一行之外,所有行都具有相同的低值 - 此行的值更高。