我想按字母顺序排序从LINQ查询获得的客户列表:
var routeList = db.Clients
.Where(p => p.ClientName
.StartsWith(term))
.Select(p => new { id = p.ClientID, clientName = p.ClientName })
.OrderBy(p=>p.clientName).ToList();
但是当我调用它时,它不按字母顺序排序。你知道为什么吗? TNX。
更新:所以,请原谅我没有详细说明.. 我正在使用自动完成功能。所以这是代码。 控制器:
public JsonResult Search(string term)
{
//term = Request.QueryString["term"];
var routeList = db.Clients
.Where(p => p.ClientName
.StartsWith(term))
.Select(p => new { id = p.ClientID, clientName = p.ClientName })
.OrderBy(p=>p.clientName).ToList();
return Json(routeList, JsonRequestBehavior.AllowGet);
}
我的观点是:
@model IEnumerable<DataAccess.AdeccoView>
@{
ViewBag.Title = "SAR";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<p>
<input type="text" id="clientList" class="form-control"/>
</p>
@Styles.Render("~/Content/themes/base/css")
<script type="text/javascript">
$(document).ready(function () {
$("#clientList").autocomplete({
source: function (request, response) {
$.ajax({
url: "/AdeccoViews/Search",
type: "POST",
dataType: "json",
data: { term: request.term },
success: function(data) {
response($.map(data, function(item) {
return { label: item.clientName};
}));
}
});
},
messages: {
noResults: "", results: ""
}
});
})
答案 0 :(得分:2)
当您在查询中调用Select()
时,您将更改Queryable将返回的内容。尝试在OrderBy
之前使用Select()
,并作为一个好的实践,尝试将Select()
作为查询的最后一种方法。样本:
var routeList = db.Clients
.Where(p => p.ClientName.StartsWith(term))
.OrderBy(p => p.ClientName)
.Select(p => new { id = p.ClientID, clientName = p.ClientName })
.ToList();