C# 在控制器中对结果排序

C# 在控制器中对结果排序,c#,asp.net-mvc,sql-order-by,C#,Asp.net Mvc,Sql Order By,我的控制器中有以下操作: public ActionResult Details(String id) { MyRecordContext rc = new MyRecordContext(); List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).ToList(); return View(rl); } 公共操作结果详细信息(字符串id) { MyRecordContext rc

我的控制器中有以下操作:

public ActionResult Details(String id)
{
    MyRecordContext rc = new MyRecordContext();
    List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).ToList();

    return View(rl);
}
公共操作结果详细信息(字符串id)
{
MyRecordContext rc=新的MyRecordContext();
List rl=rc.MyRecords.Where(x=>x.RecordID==id.ToList();
返回视图(rl);
}

如何将OrderBy子句添加到查询中,以便在x.RecordName字段上订购记录?

您可以使用
OrderBy
扩展方法,例如

public ActionResult Details(String id)
{
    MyRecordContext rc = new MyRecordContext();
    List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName).ToList();

    return View(rl);
}
公共操作结果详细信息(字符串id)
{
MyRecordContext rc=新的MyRecordContext();
List rl=rc.MyRecords.Where(x=>x.RecordID==id).OrderBy(x=>x.RecordName.ToList();
返回视图(rl);
}

这将按项目的
RecordName
字母顺序对项目进行排序。

您可以使用
OrderBy
扩展方法,例如

public ActionResult Details(String id)
{
    MyRecordContext rc = new MyRecordContext();
    List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName).ToList();

    return View(rl);
}
公共操作结果详细信息(字符串id)
{
MyRecordContext rc=新的MyRecordContext();
List rl=rc.MyRecords.Where(x=>x.RecordID==id).OrderBy(x=>x.RecordName.ToList();
返回视图(rl);
}

这将按项目的
记录名
字母顺序对项目进行排序。

您可以使用OrderBy进行以下操作:

public ActionResult Details(String id)
{
MyRecordContext rc = new MyRecordContext();
List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName ).ToList();
return View(rl);
}
公共操作结果详细信息(字符串id)
{
MyRecordContext rc=新的MyRecordContext();
List rl=rc.MyRecords.Where(x=>x.RecordID==id).OrderBy(x=>x.RecordName.ToList();
返回视图(rl);
}

您可以将OrderBy用于例如

public ActionResult Details(String id)
{
MyRecordContext rc = new MyRecordContext();
List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName ).ToList();
return View(rl);
}
公共操作结果详细信息(字符串id)
{
MyRecordContext rc=新的MyRecordContext();
List rl=rc.MyRecords.Where(x=>x.RecordID==id).OrderBy(x=>x.RecordName.ToList();
返回视图(rl);
}

如果要按两个字段排序,可以执行以下操作:

List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id)
                                .OrderBy(r=>r.RecordName)
                                .ThenBy(r=>r.RecordTitle)
                                .ToList();
List rl=rc.MyRecords.Where(x=>x.RecordID==id)
.OrderBy(r=>r.RecordName)
.ThenBy(r=>r.RecordTitle)
.ToList();

ThenBy
方法根据键按升序对序列中的元素执行后续排序。如果多次调用
OrderBy
,它将有效地将序列完全重新排序两次

如果要按两个字段排序,可以执行以下操作:

List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id)
                                .OrderBy(r=>r.RecordName)
                                .ThenBy(r=>r.RecordTitle)
                                .ToList();
List rl=rc.MyRecords.Where(x=>x.RecordID==id)
.OrderBy(r=>r.RecordName)
.ThenBy(r=>r.RecordTitle)
.ToList();

ThenBy
方法根据键按升序对序列中的元素执行后续排序。如果多次调用
OrderBy
,它将有效地将序列完全重新排序两次

您真的不应该将db逻辑放入控制器上的操作中。您是指where子句还是order by?实际上,两者都是。这些属于DAL(数据库访问层)内部。您的控制器不应该知道如何获取数据或数据来自何处,这就是为什么必须对其进行抽象。MVC的全部要点是拥有一个解耦的体系结构。控制器的存在是为了创建一个响应,该响应将被发送到客户端,获取in参数,解析请求并基于此返回视图(并在必要时传递模型/视图模型)。您确实不应该将db逻辑放在控制器上的操作中。您是指where子句还是order by?实际上,两者都是。这些属于DAL(数据库访问层)内部。您的控制器不应该知道如何获取数据或数据来自何处,这就是为什么必须对其进行抽象。MVC的全部要点是拥有一个解耦的体系结构。控制器的存在是为了创建一个响应,该响应将被发送到客户端,获取in参数,解析请求并基于此返回视图(并在必要时传递模型/视图模型)。谢谢!还有一件事-如果我想按两个字段(例如RecordName和RecordTitle)排序,我该怎么做?谢谢!还有一件事——如果我想按两个字段(例如RecordName和RecordTitle)排序,我该怎么做?一般来说,如果答案中包含对代码意图的解释,以及在不引入其他字段的情况下解决问题的原因,那么答案会更有帮助。(这篇文章至少有一个用户标记过,大概是因为他们认为应该删除没有解释的答案。)一般来说,如果答案中包含了对代码意图的解释,以及在不介绍其他人的情况下解决问题的原因,那么答案会更有帮助。(这篇文章至少有一个用户标记过,大概是因为他们认为应该删除没有解释的答案。)