Linq动态订单查询结果按类型输入字符串

时间:2017-03-15 17:43:46

标签: linq

我必须使用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(?????);

1 个答案:

答案 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