Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq_Sorting - Fatal编程技术网

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 []”不能在查询中初始化。