我必须使用Dynamic Linq,因为该表会根据用户的地理位置动态更改。 有一个自动完成文本输入框将输入的字符串传递给控制器。
我只想输出匹配列表按输入字符串排序,即如果我开始输入“bo”,我希望“ Bo rdeaux”出现在“Stras bo URG”。 这是相关的代码:
public JsonResult GetTags(string term)
{
string countryCode = "FR"; // this is really picked up dynamically
string GeoData = "Models.GeoData_" + countryCode;
var searchResult = db.Set(GeoData)
.AsQueryable()
.Where("PlaceName.Contains(@0)", term)
.Select("new (PlaceName, PostalCode, Latitude, Longitude, ID AS GeoDataID)")
.OrderBy(?????);
答案 0 :(得分:0)
好的问题是"包含"返回所有结果... 包含输入字符串,而我真的只需要那些以它开头的字符串。 因此,解决方案是替换“包含”'与' StartsWith'。 一旦修复了,现在订购所有地名以及 term '开始是有道理的。按字母顺序。
public JsonResult GetTags(string term)
{
string countryCode = "FR"; // this is really picked up dynamically
string GeoData = "Models.GeoData_" + countryCode;
var searchResult = db.Set(GeoData)
.AsQueryable()
.Where("PlaceName.StartsWith(@0)", term)
.OrderBy("PlaceName")
.Select("new (PlaceName, PostalCode, Latitude, Longitude, ID AS GeoDataID)")
另外不要忘记设置jQuery自动完成参数
sortResults: false