C# 未对记录进行排序
我试图在jQueryJTable中对记录进行排序,但它没有对记录进行排序。我正在从excel文件中获取记录 下面是我试图对记录进行排序的代码的排序位:C# 未对记录进行排序,c#,jquery,sorting,C#,Jquery,Sorting,我试图在jQueryJTable中对记录进行排序,但它没有对记录进行排序。我正在从excel文件中获取记录 下面是我试图对记录进行排序的代码的排序位: if (sorting != null) { daa.OrderByDescending(i => i.Date); } 以下是我的完整代码供您检查: public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate
if (sorting != null)
{
daa.OrderByDescending(i => i.Date);
}
以下是我的完整代码供您检查:
public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
if (Request.IsAuthenticated == true)
{
string Path = @"C:\\5Newwithdate-1k.xls";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + "");
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Close();
System.Data.DataTable data = new System.Data.DataTable();
da.Fill(data);
List<TopPlayed> daa = new List<TopPlayed>();
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("TrackID")),
Date = p.Field<DateTime>("DateTimes"),
TrackName = p.Field<string>("TrackName"),
ArtistName = p.Field<string>("ArtistName"),
Times = Convert.ToInt32(p.Field<double>("Times"))
};
daa.Add(top);
}
var listOrder = daa.Where(i => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate)).ToList();
var newlist = listOrder.ToList().GetRange(jtStartIndex, jtPageSize);
if (!string.IsNullOrWhiteSpace(sorting))
{
newlist = listOrder.OrderByDescending(i => i.Date);
}
return Json(new { Result = "OK", Records = newlist, TotalRecordCount = listOrder.ToList().Count });
此电话:
daa.OrderBy(i => i.Date);
不要就地排序数据,必须将结果保存到另一个变量中:
var result = daa.OrderBy(i => i.Date);
此电话:
daa.OrderBy(i => i.Date);
不要就地排序数据,必须将结果保存到另一个变量中:
var result = daa.OrderBy(i => i.Date);
此电话:
daa.OrderBy(i => i.Date);
不要就地排序数据,必须将结果保存到另一个变量中:
var result = daa.OrderBy(i => i.Date);
此电话:
daa.OrderBy(i => i.Date);
不要就地排序数据,必须将结果保存到另一个变量中:
var result = daa.OrderBy(i => i.Date);
您在代码中所做的工作需要注意:
public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
if (Request.IsAuthenticated == true)
{
string Path = @"C:\\5Newwithdate-1k.xls";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + "");
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Close();
System.Data.DataTable data = new System.Data.DataTable();
da.Fill(data);
List<TopPlayed> daa = new List<TopPlayed>();
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("TrackID")),
Date = p.Field<DateTime>("DateTimes"),
TrackName = p.Field<string>("TrackName"),
ArtistName = p.Field<string>("ArtistName"),
Times = Convert.ToInt32(p.Field<double>("Times"))
};
//Don't sort inside your foreach!
//if (sorting != null)
//{
// daa.OrderBy(i => i.Date);
//}
daa.Add(top);
}
//var listOrder = daa.OrderBy(i => i.Date).ToList().Where(i => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate));
//Don't run a Where after Orderby, probably you're fine...but not sure its guaruanteed, oh and you probably don't want to sort here either
//I'm also a little surprised that the Convert statements in there aren't causing runtime errors..
var listOrder = daa.Where(I => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate)).ToList();
//you don't need to convert .ToList() to get .Count
if (jtStartIndex + 150 > listOrder.ToList().Count)
{
int val = listOrder.ToList().Count - jtStartIndex;
jtPageSize = val;
}
//This is the list that you actually return. This is where you sort your list
var newlist = listOrder.OrderBy(i => i.Date).ToList().GetRange(jtStartIndex, jtPageSize);
return Json(new { Result = "OK", Records = newlist, TotalRecordCount = listOrder.ToList().Count });
我会花一点时间仔细检查,确保您实际上也需要所有这些ToList()。有些看起来…不必要?无论如何,希望这能帮助你解决问题。祝你好运。你在代码中所做的需要注意:
public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
if (Request.IsAuthenticated == true)
{
string Path = @"C:\\5Newwithdate-1k.xls";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + "");
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Close();
System.Data.DataTable data = new System.Data.DataTable();
da.Fill(data);
List<TopPlayed> daa = new List<TopPlayed>();
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("TrackID")),
Date = p.Field<DateTime>("DateTimes"),
TrackName = p.Field<string>("TrackName"),
ArtistName = p.Field<string>("ArtistName"),
Times = Convert.ToInt32(p.Field<double>("Times"))
};
//Don't sort inside your foreach!
//if (sorting != null)
//{
// daa.OrderBy(i => i.Date);
//}
daa.Add(top);
}
//var listOrder = daa.OrderBy(i => i.Date).ToList().Where(i => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate));
//Don't run a Where after Orderby, probably you're fine...but not sure its guaruanteed, oh and you probably don't want to sort here either
//I'm also a little surprised that the Convert statements in there aren't causing runtime errors..
var listOrder = daa.Where(I => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate)).ToList();
//you don't need to convert .ToList() to get .Count
if (jtStartIndex + 150 > listOrder.ToList().Count)
{
int val = listOrder.ToList().Count - jtStartIndex;
jtPageSize = val;
}
//This is the list that you actually return. This is where you sort your list
var newlist = listOrder.OrderBy(i => i.Date).ToList().GetRange(jtStartIndex, jtPageSize);
return Json(new { Result = "OK", Records = newlist, TotalRecordCount = listOrder.ToList().Count });
我会花一点时间仔细检查,确保您实际上也需要所有这些ToList()。有些看起来…不必要?无论如何,希望这能帮助你解决问题。祝你好运。你在代码中所做的需要注意:
public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
if (Request.IsAuthenticated == true)
{
string Path = @"C:\\5Newwithdate-1k.xls";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + "");
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Close();
System.Data.DataTable data = new System.Data.DataTable();
da.Fill(data);
List<TopPlayed> daa = new List<TopPlayed>();
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("TrackID")),
Date = p.Field<DateTime>("DateTimes"),
TrackName = p.Field<string>("TrackName"),
ArtistName = p.Field<string>("ArtistName"),
Times = Convert.ToInt32(p.Field<double>("Times"))
};
//Don't sort inside your foreach!
//if (sorting != null)
//{
// daa.OrderBy(i => i.Date);
//}
daa.Add(top);
}
//var listOrder = daa.OrderBy(i => i.Date).ToList().Where(i => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate));
//Don't run a Where after Orderby, probably you're fine...but not sure its guaruanteed, oh and you probably don't want to sort here either
//I'm also a little surprised that the Convert statements in there aren't causing runtime errors..
var listOrder = daa.Where(I => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate)).ToList();
//you don't need to convert .ToList() to get .Count
if (jtStartIndex + 150 > listOrder.ToList().Count)
{
int val = listOrder.ToList().Count - jtStartIndex;
jtPageSize = val;
}
//This is the list that you actually return. This is where you sort your list
var newlist = listOrder.OrderBy(i => i.Date).ToList().GetRange(jtStartIndex, jtPageSize);
return Json(new { Result = "OK", Records = newlist, TotalRecordCount = listOrder.ToList().Count });
我会花一点时间仔细检查,确保您实际上也需要所有这些ToList()。有些看起来…不必要?无论如何,希望这能帮助你解决问题。祝你好运。你在代码中所做的需要注意:
public JsonResult TopPlayedInVenueList1(string sorting, string StartDate = "", string EndDate = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
if (Request.IsAuthenticated == true)
{
string Path = @"C:\\5Newwithdate-1k.xls";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + "");
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
con.Close();
System.Data.DataTable data = new System.Data.DataTable();
da.Fill(data);
List<TopPlayed> daa = new List<TopPlayed>();
foreach (DataRow p in data.Rows)
{
TopPlayed top = new TopPlayed()
{
TrackID = Convert.ToInt32(p.Field<double>("TrackID")),
Date = p.Field<DateTime>("DateTimes"),
TrackName = p.Field<string>("TrackName"),
ArtistName = p.Field<string>("ArtistName"),
Times = Convert.ToInt32(p.Field<double>("Times"))
};
//Don't sort inside your foreach!
//if (sorting != null)
//{
// daa.OrderBy(i => i.Date);
//}
daa.Add(top);
}
//var listOrder = daa.OrderBy(i => i.Date).ToList().Where(i => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate));
//Don't run a Where after Orderby, probably you're fine...but not sure its guaruanteed, oh and you probably don't want to sort here either
//I'm also a little surprised that the Convert statements in there aren't causing runtime errors..
var listOrder = daa.Where(I => i.Date >= Convert.ToDateTime(StartDate) && i.Date <= Convert.ToDateTime(EndDate)).ToList();
//you don't need to convert .ToList() to get .Count
if (jtStartIndex + 150 > listOrder.ToList().Count)
{
int val = listOrder.ToList().Count - jtStartIndex;
jtPageSize = val;
}
//This is the list that you actually return. This is where you sort your list
var newlist = listOrder.OrderBy(i => i.Date).ToList().GetRange(jtStartIndex, jtPageSize);
return Json(new { Result = "OK", Records = newlist, TotalRecordCount = listOrder.ToList().Count });
我会花一点时间仔细检查,确保您实际上也需要所有这些ToList()。有些看起来…不必要?无论如何,希望这能帮助你解决问题。祝你好运。谢谢-我尝试了你的建议,但没有成功。我已经用你的代码更新了我的帖子。如果(排序!=null){daa=daa.OrderBy(I=>I.Date);}?我已经在顶部定义了
daa
列表
变量,所以它不会接受它。默认情况下,它会对表进行排序(ASC/DESC),这很好,但是当单击表标题对列进行排序时,它什么也不做。谢谢-我尝试了您的建议,但没有成功。我已经用你的代码更新了我的帖子。如果(排序!=null){daa=daa.OrderBy(I=>I.Date);}?我已经在顶部定义了daa
列表
变量,所以它不会接受它。默认情况下,它会对表进行排序(ASC/DESC),这很好,但是当单击表标题对列进行排序时,它什么也不做。谢谢-我尝试了您的建议,但没有成功。我已经用你的代码更新了我的帖子。如果(排序!=null){daa=daa.OrderBy(I=>I.Date);}?我已经在顶部定义了daa
列表
变量,所以它不会接受它。默认情况下,它会对表进行排序(ASC/DESC),这很好,但是当单击表标题对列进行排序时,它什么也不做。谢谢-我尝试了您的建议,但没有成功。我已经用你的代码更新了我的帖子。如果(排序!=null){daa=daa.OrderBy(I=>I.Date);}?我已经在顶部定义了daa
列表
变量,所以它不会接受它。默认情况下,它会对表进行排序(ASC/DESC),这很好,但是当单击表标题对列进行排序时,它不会做任何事情。首先,感谢您抽出时间编写代码并帮助我。您的代码更有意义,更易于理解,因为我对C#还相当陌生。我尝试了您的代码,但它给出了以下错误此行已存在显式转换newlist=listOrder.OrderByDescending(I=>I.Date)代码>我已经用你的代码更新了上面的代码供你检查,再次感谢你:)还有@Mike,我默认按行排序,这很好。。但是,当我单击表标题时,它不会对列进行排序。单击时,排序箭头会上下移动,但数据保持不变。。再次感谢您的时间、努力和帮助:)好的,我还没有测试过这段代码。我猜(这有点可笑)您需要在末尾添加.ToList()。我会用这个更新我的帖子。你的第二个评论很难理解。第1步是验证此函数是否按照您想要的顺序返回列表。如果这是真的,那么问题不在这里,而是在你看来。很抱歉,我不清楚,我可以对列进行排序,但标题排序不起作用。再一次为混淆感到抱歉。首先感谢您抽出时间来处理代码并帮助我解决问题。您的代码更有意义,更易于理解,因为我对C#还相当陌生。我尝试了您的代码,但它给出了以下错误此行已存在显式转换newlist=listOrder.OrderByDescending(I=>I.Date)代码>我已经用你的代码更新了上面的代码供你检查,再次感谢你:)还有@Mike,我默认按行排序,这很好。。但是,当我单击表标题时,它不会对列进行排序。单击时,排序箭头会上下移动,但数据保持不变。。再次感谢您的时间、努力和帮助:)好的,我还没有测试过这段代码。我猜(这有点可笑)您需要在末尾添加.ToList()。我会用这个更新我的帖子。你的第二个评论很难理解。第1步是验证此函数是否按照您想要的顺序返回列表。如果这是真的,那么问题不在这里,而是在你看来。很抱歉,我不清楚,我可以对列进行排序,但标题排序不起作用。再次抱歉