0

私はいくつかの日付を含むデータベースを持っています。それらを取得し、グラフで使用するために string[] に変換したいと考えています。

        var Yaxis = db.Graphs
                    .Where(x => x.Node.Contains(Node))
                    .Select(x => x.Dates)
                    .ToArray();


        var data = new string[Yaxis.Length];
        for (int i = 0; i < Yaxis.Length ; i++)
        {
            data[i] = Yaxis[i].ToString;
        }

.ToString は、「非デリゲート型」エラーでここでは機能しません。配列を文字列[]に解析する他の方法を知りません。

何か案が?

4

2 に答える 2

4
data[i] = Yaxis[i].ToString();

括弧を含めない場合、実際には戻り値について話しているときに、コンパイラはfunctionについて話していると想定します。 ToString

関数自体について話しているときは、デリゲート (C/C++ の関数ポインターに似ています) と呼ばれ、発生しているエラーを説明します。

于 2013-02-13T06:50:33.357 に答える
2

Antonijn が投稿したように、差し迫った問題は、ToString実際にメソッドを呼び出さずに使用していることです。

ただし、LINQ で実行することで、これよりも優れた方法で開始できます。

var data = db.Graphs
             .Where(x => x.Node.Contains(Node))
             .Select(x => x.Dates.ToString())
             .ToArray();

ToString()ここでプロジェクションを呼び出していることに注意してください。希望する結果が得られない場合 (たとえば、データベースで変換を実行するため)、2 つの呼び出しに分割し、1 つSelectの呼び出しでAsEnumerable2 つ目の呼び出しをローカルで実行するように強制できます。

var data = db.Graphs
             .Where(x => x.Node.Contains(Node))
             .Select(x => x.Dates)
             .AsEnumerable()
             .Select(x => x.ToString())
             .ToArray();

DateTimeもちろん、これは現在のカルチャのデフォルトの文字列表現を使用します。標準またはカスタムの日付/時刻形式の文字列を指定して、出力形式を変更したり、異なるカルチャを指定したりすることを検討することをお勧めします。それは、データをどうするかによって異なります。

Yaxisこれはすべて、他に何も必要ないことを前提としています。必要な場合Yaxisでも、LINQ を使用してコードを簡素化できます。

var data = Yaxis.Select(x => x.ToString()).ToArray();
于 2013-02-13T06:53:26.467 に答える