在C#中将NaN值转换为空字符串

时间:2018-07-05 11:58:29

标签: c#

我希望这不是一个愚蠢的问题,但我会尽力解释。

我从数据库中读取平均值并将其写入矩阵,我进行了一个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();

1 个答案:

答案 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);
}