다음 코드에서 name, numofmentions, s 및 salience가 필드 인 인스턴스 Player 인스턴스가 있습니다. 두 번째 for 루프에서는 각 플레이어 객체의 val.s 값을 설정합니다. 그런 다음 합쳐서 합계를 만들면 괜찮습니다. 그런 다음 for (3 번째) for 루프에서 각 객체의 val.s에있는 값을 사용하려고하지만 모든 0을 반환합니다. 왜 누군가 말해 줄 수 있니? 당신이 플레이어 인스턴스를 재사용해야하는 경우오브젝트 필드가 값을 유지하지 않습니다
.Select(x => new Player { name = x.Key, numMention = x.Sum(y => y.numMention)});
는, 선택 후 ToList를 호출하려고 : 난 그 게으르게 열거 평가, 당신은 LINQ의 선택을 사용하는
for (int i=0;i<players.Count;i++)
{
myList.Add(new Player {name = players[i], numMention=playersNumMentions[i]});
}
var mySummedList = myList.GroupBy(x => x.name).Select(x => new Player { name = x.Key, numMention = x.Sum(y => y.numMention)});
foreach (var val in mySummedList)
{
if (val.numMention > 50000) //differs for different problems
{
sql = "SELECT COUNT(Actor1Code) AS S FROM [gdelt-bq:full.events] WHERE Year>=" + predictionDate + " AND (Actor1Code ='" + val.name + "' AND ((Actor2CountryCode = '" + mainPlayer1 + "') OR (Actor2CountryCode='" + mainPlayer2 + "')))";
response = new WebClient().DownloadString(url + "?q=" + Uri.EscapeUriString(sql));
value = JsonValue.Parse(response);
result = value as JsonObject;
var row = result["modelData"]["rows"][0];
val.s=((int)row["f"][0]["v"]);
sumOfS += val.s;
}
}
foreach (var val in mySummedList)
{
if (val.numMention > 50000) //differs for different problems
{
val.salience = val.s/sumOfS;
Console.WriteLine(String.Format("{0}: {1}", val.name, val.salience));
}
}
예상 출력은 무엇인가에 줄을 변경하는
val.salience
유형을 변경할 수 있습니까? 0과 1 사이에있는 경우,'num'이'int' 인 경우'Sum()'에 의해 반환되는'int'를 사용하여 계산을 수행하지 않도록해야합니다. –세 번째 루프에서'val.salience'는 항상 0을 의미합니까? – dotctor
출력 (돌출부)은 0과 1 사이이지만 돌출부는 클래스에서 double 유형입니다. – nasim