Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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#_Asp.net Mvc_Linq_Asp.net Core - Fatal编程技术网

C# 在“详细信息”页面上对表进行排序

C# 在“详细信息”页面上对表进行排序,c#,asp.net-mvc,linq,asp.net-core,C#,Asp.net Mvc,Linq,Asp.net Core,在学习时,我想知道在以下代码中要做哪些更改,以便以可排序的方式提供课程详细信息表(如在的索引页上)。我可以使用一个参数调用Details方法,该参数提供所需的排序方式,但是如何让var学生使用OrderBy&OrderByDescending,因为visualstudio抱怨它们本质上是不可IQueryable的: public async Task<IActionResult> Details(int? id) { if (id == null) { return NotF

在学习时,我想知道在以下代码中要做哪些更改,以便以可排序的方式提供课程详细信息表(如在的索引页上)。我可以使用一个参数调用Details方法,该参数提供所需的排序方式,但是如何让var学生使用OrderBy&OrderByDescending,因为visualstudio抱怨它们本质上是不可IQueryable的:

public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
    return NotFound();
}

var student = await _context.Students
    .Include(s => s.Enrollments)
        .ThenInclude(e => e.Course)
    .AsNoTracking()
    .SingleOrDefaultAsync(m => m.ID == id);

if (student == null)
{
    return NotFound();
}

return View(student);
}
公共异步任务详细信息(int?id)
{
if(id==null)
{
返回NotFound();
}
var student=wait_context.Students
.包括(s=>s.注册)
.然后包括(e=>e.Course)
.AsNoTracking()
.SingleOrDefaultAsync(m=>m.ID==ID);
如果(学生==null)
{
返回NotFound();
}
返回视图(学生);
}
而索引页面的代码(如以下所示)对于var学生来说非常有用:

public async Task<IActionResult> Index(string sortOrder)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
var students = from s in _context.Students
               select s;
switch (sortOrder)
{
    case "name_desc":
        students = students.OrderByDescending(s => s.LastName);
        break;
    case "Date":
        students = students.OrderBy(s => s.EnrollmentDate);
        break;
    case "date_desc":
        students = students.OrderByDescending(s => s.EnrollmentDate);
        break;
    default:
        students = students.OrderBy(s => s.LastName);
        break;
}
return View(await students.AsNoTracking().ToListAsync());
}
公共异步任务索引(字符串排序器)
{
ViewData[“NameSortParm”]=String.IsNullOrEmpty(排序器)?“name_desc”:“;
ViewData[“DateSortParam”]=排序器==“日期”?“日期描述”:“日期”;
var students=来自s in_context.students
选择s;
开关(分拣机)
{
案例“名称描述”:
students=students.OrderByDescending(s=>s.LastName);
打破
案件“日期”:
学生=学生.OrderBy(s=>s.EnrollmentDate);
打破
案例“日期描述”:
学生=学生.OrderByDescending(s=>s.EnrollmentDate);
打破
违约:
students=students.OrderBy(s=>s.LastName);
打破
}
返回视图(等待students.AsNoTracking().toListSync());
}
提前谢谢

更新

我想,我对这个问题的描述不够好。让我们考虑另一个例子:

    public async Task<IActionResult> Details(string _AccId)
    {
        if (_AccId == null)
        {
            return NotFound();
        }
        var accs = await _context.Accounts
            .Include(Cust => Cust.Customers) //To reflect the Name of the Customer to whom the account belongs
            .Include(Bal => Bal.Balances).OrderByDescending(Balances.Report_Date) //For relevant Sub-Table on Accounts' detail page to show the balances on in shape of Report_Date (but in a descending sorted manner)
            .SingleOrDefaultAsync(m => m.SrcSys == _SrcSys && m.CustId == _CustId && m.AccId == _AccId);
        return View(accs);
    }
公共异步任务详细信息(字符串\u AccId)
{
如果(_AccId==null)
{
返回NotFound();
}
var accs=wait_context.Accounts
.Include(Cust=>Cust.Customers)//反映帐户所属客户的名称
.Include(余额=>Bal.Balances).OrderByDescending(Balances.Report\u Date)//用于科目详细信息页面上的相关子表,以报表日期的形式显示上的余额(但以降序排序方式)
.SingleOrDefaultAsync(m=>m.SrcSys==\u SrcSys&&m.CustId==\u CustId&&m.AccId==\u AccId);
返回视图(accs);
}
换句话说,只有余额表以排序方式反映余额


再次感谢。

请参阅完整的源代码和更正:如上所述,代码仅反映添加到索引视图中的排序功能,而没有编辑表的示例。如何排序:
var student=await\u context.Students.Include(s=>s.registrations).然后Include(e=>e.Course).AsNoTracking().SingleOrDefaultAsync(m=>m.ID==ID)请参见以下位置的第一个答案: