如何在SelectList的最后位置添加特定项目?

时间:2016-07-01 10:28:44

标签: asp.net-mvc linq

以下表达式返回城市列表。 “xyz”这个名字在列表中。我希望这个城市名称位于selectList的最后位置。

@Html.DropDownListFor(M => M.CityId, GetCity(), "-Select-", new { @class = "form-control" })

public static SelectList GetCity()
{
    try
    {
        using (var context = new DBContext())
        {
            var list = context.Table.AsNoTracking().Where(x => x.REF_TYPE == "CITY").OrderBy(x => x.DESCRIPTION).ToList();
            return new SelectList(list, "REF_ID", "DESCRIPTION");
        }
    }
    catch (Exception ex)
    {
       throw ex;
    }
}

1 个答案:

答案 0 :(得分:0)

通常,列表会按照添加顺序显示项目。因此,您可以再次删除并添加该项目:

var list = context.Table.AsNoTracking().Where(x => x.REF_TYPE == "CITY").OrderBy(x => x.DESCRIPTION).ToList();
var xyz = list.First(entry => entry.Text == "xyz");
list.Remove(xyz);
list.Add(xyz);

更简洁的方法可能是编写一个可以与IEqualityComparer子句一起使用的自定义OrderBy