나는 다음과 같은 기능이 있습니다패스 동적 데이터 유형은 작동하려면
private string ParseJson(dynamic q)
{
string returnJSON = "[{ \"type\" : \"pie\", \"name\" : \"Campaigns\", \"data\" : [ ";
foreach (var grp in q)
{
double currCount = grp.Count();
if (grp.Key != null)
returnJSON += "['" + grp.Key + "', " + currCount + "],";
else
returnJSON += "['none', " + currCount + "],";
}
returnJSON = returnJSON.Substring(0, returnJSON.Length - 1);
returnJSON += "]}]";
return returnJSON;
}
나는이 같은 방법에서 호출을 :
public string GetCampaignData()
{
PaymentModelDataContext db = new PaymentModelDataContext();
var q = from Event in db.TrackingEvents
group Event by Event.campaignID;
return ParseJson(q);
}
나는 여러 가지 쿼리 Q를 사용하는 모든 그룹화 데이터입니다.
문제는 어떤 이유로 런타임이 유형을 q에 바인딩 할 수 없다는 것입니다. 이것은 동적 인 것의 적절한 사용인가? 이 작업을 수행하는 다른 방법이 있습니까?
개체 유형 (및 구조)이 알려지지 않았기 때문에 Count 속성이 없으므로 오류가 발생합니다. –
.Count()는 확장 메서드이며 그룹화 IIRC에 없습니다. 이것은 아마도 .Count가 없다는 오류를 제공합니다. 개인적으로 그것을 사용하는 좋은 이유가 보이지 않기 때문에 코드를 동적으로 사용하지 않도록 리팩터링 할 수 있습니까? 또한 당신은 JSON을 작성하는 JSON을 구문 분석하지 않는다. – FuleSnabel
대신에'dynamic'을 받아들이는 대신에, 당신의 메소드는 ['IGrouping']을 받아 들여야합니다 (http://msdn.microsoft.com/en-us/library/bb344977.aspx) –