C# 使用Linq对JSON对象进行排序
我从一个谷歌搜索设备建议服务那里得到了一个JSON格式的回复,格式如下C# 使用Linq对JSON对象进行排序,c#,linq-to-objects,json.net,C#,Linq To Objects,Json.net,我从一个谷歌搜索设备建议服务那里得到了一个JSON格式的回复,格式如下 string jsonString = @"{ ""query"": ""t"", ""results"": [ { ""name"": ""tom"", ""type"": ""suggest"" }, { ""name"": ""tim"", ""type"": ""suggest"" }]}"; 我想按名称字母顺序对结果列表进行排序,并将名称改为句子大小写。 我可以在jquery中执行此操作,但出于性能原因,我更愿意
string jsonString = @"{ ""query"": ""t"", ""results"": [ { ""name"": ""tom"", ""type"": ""suggest"" }, { ""name"": ""tim"", ""type"": ""suggest"" }]}";
我想按名称字母顺序对结果列表进行排序,并将名称改为句子大小写。
我可以在jquery中执行此操作,但出于性能原因,我更愿意在服务器端执行此操作
我可以对结果进行排序,但这会返回一个IEnumarable
,但我似乎无法在正在序列化的对象中对结果进行排序
string jsonString = @"{ ""query"": ""t"", ""results"": [ { ""name"": ""tom"", ""type"": ""suggest"" }, { ""name"": ""tim"", ""type"": ""suggest"" }]}";
JObject json = JObject.Parse(jsonString);
var gsaSuggestions = JsonConvert.DeserializeObject<GSASuggestion>(jsonString);
var orded = gsaSuggestions.ResultList.OrderBy<Result, string>(r => r.Name);
string output = JsonConvert.SerializeObject(gsaSuggestions);
}
[JsonObject(MemberSerialization.OptOut)]
public class GSASuggestion
{
[JsonProperty(PropertyName = "query")]
public string Query {get; set;}
[JsonProperty(PropertyName = "results")]
public List<Result> ResultList {get; set;}
}
public class Result
{
[JsonProperty(PropertyName = "name")]
public string Name {get; set;}
[JsonProperty(PropertyName = "type")]
public string Type {get; set;}
}
实际上,您没有使用OrderBy的返回值。尝试:
gsaSuggestions.ResultList =
gsaSuggestions.ResultList.OrderBy<Result, string>(r => r.Name).ToList();
gsaSuggestions.ResultList =
gsaSuggestions.ResultList.OrderBy<Result, string>(r => r.Name).ToList();
gsaSuggestions.ResultList.Sort((x, y) => x.Name.CompareTo(y.Name));