0

私は次のものを持っています:

public void ProcessRequest(HttpContext context)
{
    string query = context.Request.QueryString["term"];
    System.Web.Script.Serialization.JavaScriptSerializer JsonSerializer =
        new System.Web.Script.Serialization.JavaScriptSerializer();

    List<Category> Categs = Category.getAll();
    var result = from c in Categs where Categs.Contains(c.Name) select c;
    context.Response.ContentType = "application/json";
    context.Response.Write(JsonSerializer.Serialize(result));
}

jQuery UIオートコンプリートの[{label: "Choice1"、value: "value1"}、...]のリストを返そうとしています。IDプロパティとNameプロパティを持つカテゴリがあり、クエリ文字列とNameプロパティの「用語」に基づいてリストをフィルタリングしたいと思います。どうすればいいですか?

前もって感謝します。

4

2 に答える 2

2

最終目標がそのリストを作成し[ { label: "Choice1", value: "value1" }, ... ]、名前で並べ替えることである場合、これは機能するはずです。

result
  .OrderBy(x => x.Name)
  .Select(x => new { label: x.Name, value: x.Id }); // create an anonymous type

編集:現在のクエリ:

var result = from c in Categs where Categs.Contains(c.Name) select c;

間違っているように見えます。クエリはすべてを選択するのと同じだと思いますCategs。送信された用語に基づいてクエリを実行する場合は、そのlinq式でc.Name次のように置き換えます。query

var result = from c in Categs where Categs.Contains(query) select c;
于 2012-07-08T16:18:12.480 に答える
0
string upperTerm = term.ToUpper();

var result = Category.getAll()
  .Where(c => c.Name.ToUpper().Contains(upperTerm))
  .Select(c => new { label = c.Name, value = c.Id });

次に、JSONをシリアル化しresultます。

于 2012-07-08T16:19:27.063 に答える