C# 将字典中的键和值转换为字符串[]数组
我有一个webservice函数,它返回如下内容: 路易斯安那州新奥尔良 纽约,纽约 新泽西州纽瓦克 此数据来自以下功能: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
[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特别有效!