使用实体 c# 在 JsonConvert.DeserializeObject 之后订购项目 - 无法隐式转换类型 'System.Collections.Generic.List
order items after JsonConvert.DeserializeObject using entity c# - Cannot implicitly convert type 'System.Collections.Generic.List
我从 API 得到一个结果,然后反序列化它,我想对 JSON 进行排序,但它不起作用并给我一个错误:无法隐式转换类型 'System.Collections.Generic.List...
我的 API :
public async Task<Root_SDL> ValidateScenario(string SDL_text)
{
try
{
// Api Config
var ApiPath = "something here";
var SDL_version = "something here";
// var SDL_text = something here;
HttpClient httpClient_ = new HttpClient();
var Keys = new List<KeyValuePair<string, string>>();
Keys.Add(new KeyValuePair<string, string>("something here", SDL_version));
Keys.Add(new KeyValuePair<string, string>("something here", SDL_text));
var ApiRequest = new HttpRequestMessage(HttpMethod.Get, ApiPath) { Content = new FormUrlEncodedContent(Keys) };
HttpResponseMessage ApiResponse = await httpClient_.SendAsync(ApiRequest);
var responseString_ApiSDL = await ApiResponse.Content.ReadAsStringAsync();
// ParserIssuesToJS = responseString_ApiSDL;
var APIstatusCode = ApiResponse.StatusCode;
// API Deserialize
Root_SDL SDL = JsonConvert.DeserializeObject<Root_SDL>(responseString_ApiSDL);
var test = (from c in SDL.issues select c)
.Select(x => new
{
x.description,
x.columnStart,
x.columnEnd,
x.lineStart,
x.lineEnd
}
)
.OrderBy(x=>x.columnStart)
.ToList()
;
return test ; // here is the error (when I return SDL it works well but if I put 'test' that I miss a case or something)
}
catch (System.Exception)
{
throw;
}
}
下面是我的json。我需要它的 'passed' 值以及问题数组
{
"Name": "something here",
"passed": false,
"issues": [
{
"description": "something here",
"lineStart": 13,
"lineEnd": 13,
"columnStart": 4,
"columnEnd": 10
},
{
"description": "something here",
"lineStart": 14,
"lineEnd": 14,
"columnStart": 30,
"columnEnd": 31
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 29,
"columnEnd": 30
},
{
"description": "mismatched input '.' expecting ':'",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 36,
"columnEnd": 37
},
{
"description": "something here",
"lineStart": 14,
"lineEnd": 14,
"columnStart": 28,
"columnEnd": 30
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 27,
"columnEnd": 29
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 34,
"columnEnd": 36
}
]
}
我想按columnStart
排序
下面是我的Root_SDLclass
public class Root_SDL
{
public string? fileName { get; set; }
public bool passed { get; set; }
public string? parsingStartTime { get; set; }
public string? parsingEndTime { get; set; }
public List<Issue>? issues { get; set; }
public List<string>? debug { get; set; }
}
你 return 的这部分代码将不是 Root_SDL
的类型,如果你想 return 与你的 return 类型不匹配你的方法。
var test = (from c in SDL.issues select c)
.Select(x => new
{
x.description,
x.columnStart,
x.columnEnd,
x.lineStart,
x.lineEnd
}).OrderBy(x=>x.columnStart).ToList()
根据你的问题,你只能 order by
发布集合并直接,这可能只会对 issues
进行排序,但会保留 SDL
中的原始 属性
Root_SDL SDL = JsonConvert.DeserializeObject<Root_SDL>(responseString_ApiSDL);
SDL.issues = SDL.issues.OrderBy(x=> x.columnStart).ToList();
return SDL;
我从 API 得到一个结果,然后反序列化它,我想对 JSON 进行排序,但它不起作用并给我一个错误:无法隐式转换类型 'System.Collections.Generic.List...
我的 API :
public async Task<Root_SDL> ValidateScenario(string SDL_text)
{
try
{
// Api Config
var ApiPath = "something here";
var SDL_version = "something here";
// var SDL_text = something here;
HttpClient httpClient_ = new HttpClient();
var Keys = new List<KeyValuePair<string, string>>();
Keys.Add(new KeyValuePair<string, string>("something here", SDL_version));
Keys.Add(new KeyValuePair<string, string>("something here", SDL_text));
var ApiRequest = new HttpRequestMessage(HttpMethod.Get, ApiPath) { Content = new FormUrlEncodedContent(Keys) };
HttpResponseMessage ApiResponse = await httpClient_.SendAsync(ApiRequest);
var responseString_ApiSDL = await ApiResponse.Content.ReadAsStringAsync();
// ParserIssuesToJS = responseString_ApiSDL;
var APIstatusCode = ApiResponse.StatusCode;
// API Deserialize
Root_SDL SDL = JsonConvert.DeserializeObject<Root_SDL>(responseString_ApiSDL);
var test = (from c in SDL.issues select c)
.Select(x => new
{
x.description,
x.columnStart,
x.columnEnd,
x.lineStart,
x.lineEnd
}
)
.OrderBy(x=>x.columnStart)
.ToList()
;
return test ; // here is the error (when I return SDL it works well but if I put 'test' that I miss a case or something)
}
catch (System.Exception)
{
throw;
}
}
下面是我的json。我需要它的 'passed' 值以及问题数组
{
"Name": "something here",
"passed": false,
"issues": [
{
"description": "something here",
"lineStart": 13,
"lineEnd": 13,
"columnStart": 4,
"columnEnd": 10
},
{
"description": "something here",
"lineStart": 14,
"lineEnd": 14,
"columnStart": 30,
"columnEnd": 31
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 29,
"columnEnd": 30
},
{
"description": "mismatched input '.' expecting ':'",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 36,
"columnEnd": 37
},
{
"description": "something here",
"lineStart": 14,
"lineEnd": 14,
"columnStart": 28,
"columnEnd": 30
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 27,
"columnEnd": 29
},
{
"description": "something here",
"lineStart": 15,
"lineEnd": 15,
"columnStart": 34,
"columnEnd": 36
}
]
}
我想按columnStart
排序下面是我的Root_SDLclass
public class Root_SDL
{
public string? fileName { get; set; }
public bool passed { get; set; }
public string? parsingStartTime { get; set; }
public string? parsingEndTime { get; set; }
public List<Issue>? issues { get; set; }
public List<string>? debug { get; set; }
}
你 return 的这部分代码将不是 Root_SDL
的类型,如果你想 return 与你的 return 类型不匹配你的方法。
var test = (from c in SDL.issues select c)
.Select(x => new
{
x.description,
x.columnStart,
x.columnEnd,
x.lineStart,
x.lineEnd
}).OrderBy(x=>x.columnStart).ToList()
根据你的问题,你只能 order by
发布集合并直接,这可能只会对 issues
进行排序,但会保留 SDL
Root_SDL SDL = JsonConvert.DeserializeObject<Root_SDL>(responseString_ApiSDL);
SDL.issues = SDL.issues.OrderBy(x=> x.columnStart).ToList();
return SDL;