ASMX 웹 서비스에서 JSON에 직렬화 된 LINQ 결과를 반환하려고합니다. 내가 아는 한 이것이 작동해야하므로 뭔가를 놓치고 있어야합니다.LINQ 결과를 JSON에 직렬화하여 반환하는 ArgumentException
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetCitiesForAffiliate(string aff)
{
XDocument centerXml = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Centers.xml"));
var query = (from center in centerXml.Descendants("Center")
where center.Element("ServiceArea").Value == aff
orderby center.Element("City") ascending
select new {
City = center.Element("City")
}).Distinct();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(query);
return json;
}
serializer.Serialize (쿼리) 라인은 ArgumentException이 예외 : At least one object must implement IComparable.
나는 어쩌면 문제는 내가 익명의 객체를 선택하지만, 그것을하지 않았다 객체를 입력하는 것을 생각했다. 내가 바보 같은 것을 놓친 것 같아?
흥미롭게도,이 이전 버전 괜찮 았는데 :
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetCitiesForAffiliate(string aff)
{
TextFileReader reader1 = new TextFileReader(HttpContext.Current.Server.MapPath("~/App_Data/Centers.csv"), ",");
var query = (from cols in reader1
where cols[3].Equals(aff)
orderby cols[2] ascending
select new { City = cols[2] }).Distinct();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(query);
return json;
}
TextFileReader 객체가 this CodeProject project에서입니다.
굉장합니다. 비교를 위해 ToString()이 필요했습니다. 고마워요! –