C# 如何对没有命名列的匿名类型进行排序
根据这个问题: 现在我想分类:C# 如何对没有命名列的匿名类型进行排序,c#,linq,sorting,C#,Linq,Sorting,根据这个问题: 现在我想分类: var orderByIndexVal = Convert.ToInt32(Request["iSortCol_0"]); var direction = Request["sSortDir_0"]; var gridInfo = from leader in db.SchoolLdrAdminAccesses join emp in db.Employees on leader.ID equals emp.ID
var orderByIndexVal = Convert.ToInt32(Request["iSortCol_0"]);
var direction = Request["sSortDir_0"];
var gridInfo =
from leader in db.SchoolLdrAdminAccesses
join emp in db.Employees
on leader.ID equals emp.ID
select new List<string> { leader.ID, emp.FirstName + " " + emp.LastName };
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = gridInfo.Count(),
iTotalDisplayRecords = gridInfo.Count(),
aaData = gridInfo.ToArray()
},
JsonRequestBehavior.AllowGet);
但是我得到了以下错误:
if (direction == "asc")
{
gridInfo = gridInfo.OrderBy(gi => gi[orderByIndexVal]);
}
else
{
gridInfo = gridInfo.OrderByDescending(gi => gi[orderByIndexVal]);
}
LINQ to实体无法识别方法“System.String”
get_Item(Int32)方法,此方法无法转换为
存储表达式
在以下代码块上:
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = gridInfo.Count(),
iTotalDisplayRecords = gridInfo.Count(),
aaData = gridInfo.ToArray()
},
JsonRequestBehavior.AllowGet);
我认为这就是问题所在
new List<string> { leader.ID, emp.FirstName + " " + emp.LastName };
新列表{leader.ID,emp.FirstName+“”+emp.LastName};
您选择的匿名类型是两列{Int,String}而不是简单的列表
只需选择新的{leader.ID,emp.FirstName+“”+emp.LastName}代码>Select语句将使其自动成为IEnumerable,因此您不需要;我不需要列表部分
我假设leader.ID在这里是一个Int(这可能是错误的)我认为这就是问题所在
new List<string> { leader.ID, emp.FirstName + " " + emp.LastName };
新列表{leader.ID,emp.FirstName+“”+emp.LastName};
您选择的匿名类型是两列{Int,String}而不是简单的列表
只需选择新的{leader.ID,emp.FirstName+“”+emp.LastName}代码>Select语句将使其自动成为IEnumerable,因此您不需要;我不需要列表部分
我假设leader.ID在这里是一个Int(这可能是错误的)我认为这就是问题所在
new List<string> { leader.ID, emp.FirstName + " " + emp.LastName };
新列表{leader.ID,emp.FirstName+“”+emp.LastName};
您选择的匿名类型是两列{Int,String}而不是简单的列表
只需选择新的{leader.ID,emp.FirstName+“”+emp.LastName}代码>Select语句将使其自动成为IEnumerable,因此您不需要;我不需要列表部分
我假设leader.ID在这里是一个Int(这可能是错误的)我认为这就是问题所在
new List<string> { leader.ID, emp.FirstName + " " + emp.LastName };
新列表{leader.ID,emp.FirstName+“”+emp.LastName};
您选择的匿名类型是两列{Int,String}而不是简单的列表
只需选择新的{leader.ID,emp.FirstName+“”+emp.LastName}代码>Select语句将使其自动成为IEnumerable,因此您不需要;我不需要列表部分
我假设leader.ID在这里是一个Int(这可能是错误的)您需要具体化列表,这样在连接发生后,order by
不会发生在DB中,而是发生在.NET中
var gridInfo = (from leader in db.SchoolLdrAdminAccesses
join emp in db.Employees
on leader.ID equals emp.ID
select new string[]{ leader.ID.ToString(),
emp.FirstName + " " + emp.LastName })
.ToList();
还要注意,使用数组而不是列表使用更少的内存。希望这会有所帮助。您需要具体化列表,以便在连接发生后,order by
不会发生在DB中,而是发生在.NET中
var gridInfo = (from leader in db.SchoolLdrAdminAccesses
join emp in db.Employees
on leader.ID equals emp.ID
select new string[]{ leader.ID.ToString(),
emp.FirstName + " " + emp.LastName })
.ToList();
还要注意,使用数组而不是列表使用更少的内存。希望这会有所帮助。您需要具体化列表,以便在连接发生后,order by
不会发生在DB中,而是发生在.NET中
var gridInfo = (from leader in db.SchoolLdrAdminAccesses
join emp in db.Employees
on leader.ID equals emp.ID
select new string[]{ leader.ID.ToString(),
emp.FirstName + " " + emp.LastName })
.ToList();
还要注意,使用数组而不是列表使用更少的内存。希望这会有所帮助。您需要具体化列表,以便在连接发生后,order by
不会发生在DB中,而是发生在.NET中
var gridInfo = (from leader in db.SchoolLdrAdminAccesses
join emp in db.Employees
on leader.ID equals emp.ID
select new string[]{ leader.ID.ToString(),
emp.FirstName + " " + emp.LastName })
.ToList();
还要注意,使用数组而不是列表使用更少的内存。希望能有帮助。我不确定我是否理解这个问题,但是,gridInfo=gridInfo.OrderBy(…)
看起来应该可以解决这个问题。你试过了吗?@Jon我更新了我的问题,向你展示了我做了什么,以及我犯了什么错误。我不确定我是否理解这个问题,但是,gridInfo=gridInfo.OrderBy(…)
看起来应该可以做到这一点。你试过了吗?@Jon我更新了我的问题,向你展示了我做了什么,以及我犯了什么错误。我不确定我是否理解这个问题,但是,gridInfo=gridInfo.OrderBy(…)
看起来应该可以做到这一点。你试过了吗?@Jon我更新了我的问题,向你展示了我做了什么,以及我犯了什么错误。我不确定我是否理解这个问题,但是,gridInfo=gridInfo.OrderBy(…)
看起来应该可以做到这一点。你试过了吗?@Jon我更新了我的问题,向你展示了我做了什么以及我得到了什么错误。ID是一个int,但是通过删除列表,它要求我命名firstName+lastName串联,我试图避免这种情况,因为我将其转换为JSON,以便网格使用,而网格不喜欢命名的JSON条目……不确定这是否可行,但是尝试用新字典代替列表-至少数据类型matchID应该是int,但是通过删除列表,它要求我命名firstName+lastName串联,我试图避免这种情况,因为我将其转换为JSON,以便网格使用,而网格不喜欢命名的JSON条目……不确定这是否可行,但是尝试用新字典代替列表-至少数据类型matchID应该是int,但是通过删除列表,它要求我命名firstName+lastName串联,我试图避免这种情况,因为我将其转换为JSON,以便网格使用,而网格不喜欢命名的JSON条目……不确定这是否可行,但是尝试用新字典代替列表-至少数据类型matchID应该是int,但是通过删除列表,它要求我命名firstName+lastName串联,我试图避免这种情况,因为我将其转换为JSON,以便网格使用,而网格不喜欢命名的JSON条目……不确定这是否可行,但是尝试使用新字典代替列表-至少数据类型应该匹配当我添加orderby代码时,我仍然会遇到相同的错误。你确定没有错过结尾处的“.ToList();”吗?当我使用你建议的语法时,我会遇到一个错误:数组类型“System.String[]”无法在查询结果中初始化。考虑使用“Stry.Cuff.Gual.List.1(Strase.String)”。当我添加OrrdBy代码时,我仍然会得到同样的错误。你确信你没有错过“.TelSist[())吗?”当我使用你建议的语法时,我得到了一个错误:数组类型“Stry.String []”不能在查询中初始化。