C# 将字典中的键和值转换为字符串[]数组

C# 将字典中的键和值转换为字符串[]数组,c#,web-services,jquery-ui,C#,Web Services,Jquery Ui,我有一个webservice函数,它返回如下内容: 路易斯安那州新奥尔良 纽约,纽约 新泽西州纽瓦克 此数据来自以下功能: [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string[] GetCitiesWithState(string isoalpha2, string prefixText) { var dict = AtomicCore.CityObject.GetCitiesInC

我有一个webservice函数,它返回如下内容:

路易斯安那州新奥尔良 纽约,纽约 新泽西州纽瓦克 此数据来自以下功能:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetCitiesWithState(string isoalpha2, string prefixText)
{
    var dict = AtomicCore.CityObject.GetCitiesInCountryWithStateAutocomplete(isoalpha2, prefixText);
    string[] cities = dict.Values.ToArray();
    return cities;
}
它工作得非常好,但我真正需要的是这样一个列表:

路易斯安那州新奥尔良12号 22,纽约,纽约 新泽西州纽瓦克48号 作为城市Id,它包含在dict中,dict类型为:Dictionary

我这样做的原因是因为我有一些Jquery可以读取ASMX服务和这个方法,我需要能够看到所选城市的城市Id。这是我的Jquery for Clearify,目前有效:

$('#<%=txtCity.ClientID%>').autocomplete({
            source: function (request, response) {
                var parameters = {
                    isoalpha2: '<%=Session["BusinessCountry"].ToString()%>',
                    prefixText: request.term
                };
                $.ajax({
                    url: '<%=ResolveUrl("~/AtomicService/Assets.asmx/GetCitiesWithState")%>',
                    type: 'POST',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify(parameters),
                    success: function (data) {
                        response($.each(data.d, function (index, value) {
                            return {
                                label: value,
                                value: index
                            }
                        }));
                    }

                });
            },
            select: function (event, ui) {
                $('#<%=txtState.ClientID%>').val(ui.value);
            },
            minLength: 2,
            delay: 500
        });

最后,我实际想要实现的是,当用户在自动完成中选择挂起的城市:$,我希望Jquery将值(例如新奥尔良、路易斯安那)拆分为两个新奥尔良和路易斯安那,然后我希望“新奥尔良”的值为$,而“路易斯安那”的值为$。。。任何能让这种疯狂发挥作用的帮助都是值得感激的:

如果我能清楚地理解你,你只需要从WebMethod返回稍微不同的数据:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetCitiesWithState(string isoalpha2, string prefixText)
{
    var dict = AtomicCore.CityObject.GetCitiesInCountryWithStateAutocomplete(isoalpha2, prefixText);
    string[] response = dict.Select(x => String.Format("{0}, {1}", x.Key, x.Value)).ToArray();
    return response;
}
现在,在JavaScript端,您需要手动将字符串拆分为索引和标签,因为我相信现在的索引只是一个行号。像这样的只是一个草稿:

response($.each(data.d, function (index, value) {
    return {
        label: value.slice(value.indexOf(',')),
        value: parseInt(value.split(',')[0])
     }
 }));

超级答案A:非常感谢。LINQ特别有效!