我正在嘗試按照此頁面(http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-search)中的說明操作,以瞭解如何使用網站的下拉列表創建搜索頁面。但似乎無法得到下拉列表。它不斷給我這個錯誤:System.ArgumentException:DbSortClause表達式必須具有類似順序的類型。參數名稱:鍵
System.ArgumentException: DbSortClause expressions must have a type that is order comparable. Parameter name: key
的問題是:CountryList.AddRange(CountryQry.Distinct());
搜索控制器:::
public ActionResult Index(string location, string searchString)
{
var CountryList = new List<Country>();
var CountryQry = from d in db.Stuffs
orderby d.Country
select d.Country;
CountryList.AddRange(CountryQry.Distinct());
ViewBag.location = new SelectList(CountryList);
var stuff = from m in db.Stuffs
select m;
if (!String.IsNullOrEmpty(searchString))
{
stuff = stuff.Where(s => s.stuffName.Contains(searchString));
}
if (!String.IsNullOrEmpty(location))
{
stuff = stuff.Where(x => x.Country.countryName == location);
}
return View(stuff);
}
VIEW :::
<form>
@using (Html.BeginForm("Index","Search",FormMethod.Get)){
@Html.TextBox("SearchString", new { placeholder = "text" })
@Html.DropDownList("location", "All")
}
</form>
型號:::(這是從數據庫中自動生成)
public partial class Stuff
{
public string stuffId { get; set; }
public string stuffName { get; set; }
public string countryId { get; set; }
public virtual Country Country { get; set; }
}
我的C#知識是非常有限的,因此,我希望有人可以幫助我。 任何幫助表示讚賞!謝謝!
使用 「CountryQry」 沒有工作。但是,如果我用「db.Countries」取代它,它就會起作用......它只是不綁定「Stuff」和「Country」。至少它不會給我一個錯誤。感謝您的幫助! – jannn
當涉及到Linq to Entity時,此答案不起作用。 IComparer和IEqualityComparer實現返回相同的錯誤。您需要指定對象的基礎屬性。 –