我有这个表达式:
troubletickets = db.ServiceTickets.Include(t => t.Company).Include(t => t.UserProfile);
troubletickets.OrderByDescending(t => t.UserProfile != null ? t.UserProfile.FirstName : "ZZZ");
Run Code Online (Sandbox Code Playgroud)
我必须检查UserProfile是否为null,因为如果我不这样做,我将收到错误.问题是,有时UserProfiles.FirstName可以为null.当它为null时,当我按升序和降序排序时,这些值将放在列表的顶部.例如
// Null, Null, Andy, Bill, Chris
// Null, Null, Chris, Bill, Andy
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变这个表达式,这样当我按降序排序时,它会返回类似这样的内容:
// Chris, Bill, Andy, Null, Null
Run Code Online (Sandbox Code Playgroud) 我正在尝试在控制器中设置下拉菜单的选定值,并通过 ViewBag 将其传递到我的视图。当我调试时,所有正确的值都被传递到控制器和视图,但是当它实际呈现在页面上时,未设置所选值。
看法
<tr class="form-group">
<th>
<label for="CompanyID" class="control-label col-md-9">Company</label>
</th>
<td>
@Html.DropDownList("CompanyID", (IEnumerable<SelectListItem>)ViewBag.CompanyID, "", new { @class = "required-validation" })
@Html.ValidationMessageFor(model => model.CompanyID)
</td>
Run Code Online (Sandbox Code Playgroud)
控制器
public ActionResult Edit(int? id) {
if (id == null) {
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var sale = db.SalesOpportunities.Find(id);
if (sale == null) {
return HttpNotFound();
}
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "Name", sale.CompanyID);
var technicians = db.UserProfiles.Select(t => new {
ID = t.ID,
Name = t.FirstName + " " + t.LastName,
}).OrderBy(t => …Run Code Online (Sandbox Code Playgroud)