0
我想從ASMX Webservice中返回序列化爲JSON的LINQ結果。據我所知這應該起作用,所以我必須錯過一些東西。ArgumentException返回的LINQ結果序列化爲JSON
[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()進行比較。非常感謝! –