我希望这不是一个愚蠢的问题,但我会尽力解释。
我从数据库中读取平均值并将其写入矩阵,我进行了一个for循环以将零附加到矩阵中,以便可以查看以下坐标是否有值。
这是我的问题:
我现在需要计算平均值而无需从for循环中添加零。我只是删除了for循环,但是现在我的控制台中有一个NaN值。
是否有将NaN值转换/过滤为空字符串的方法?
for (int y = 1; y <= koordinaten.Laenge; y++)
{
for (int x = 1; x <= koordinaten.Breite; x++)
{
var sK = sensorKoordinaten
.Where(sKoordinaten =>
sKoordinaten.XKoordinate == x && sKoordinaten.YKoordinate == y)
.DefaultIfEmpty(new Sensor())
.FirstOrDefault();
var messung = results.Where(messungAVG => messungAVG.IDSensor == sK.ID).ToList();
var anzahl = DBHelper.GetAnzahlFromMessungKopf(idmessung);
double summe = 0;
double ergebnis = 0;
int d;
//Berechnet den Mittelwert
for (d = 0; d < messung.Count; d++)
{
summe += messung[d].Messwert;
}
ergebnis = summe / d;
Console.Write($" {ergebnis.ToString("N2")} ");
}
Console.Write("\n");
}
Console.ReadKey();
答案 0 :(得分:0)
因为messung
为空,所以出现了错误。
if (messung.Any()) // same logic than `if (messung.Count > 0)` as @Matthew Watson said
{
// by the way linq can handle sum
// ergebnis = messung.Sum(x => x.Messwert) / messung.Count;
// in fact you can go further, linq includes Average
ergebnis = messung.Average(x => x.Messwert);
}