0

列ヘッダーを含むテキスト ファイルに数値データがあります。ここで、文字列データをデータテーブルに読み込むための優れたソリューションを見つけました

カンマ区切りテキスト ファイルを C# DataTable に読み込むと、列が 255 文字に切り捨てられる

私はそれを数値データに適応させようとしましたが、成功しませんでした。文字列配列を double 配列に変換した後、このような行を追加しようとしました

myDatatable.Rows.Add(myDoubleArray)

敵は私に何も与えないようです。以下のコードのように、double をオブジェクトに変換し、数値を貼り付けようとしました。

var objectNumbers = rowData.Cast<object>().ToList();
data.Rows.Add();
for (var j = 0; j < columns.Length; j++)
{
    data.Rows[data.Rows.Count - 1][j] = objectNumbers[j];
}

それから私は数字を文字列として終わらせました。

4

1 に答える 1

0

どういうわけか私の質問は台無しになりました。おそらくマルチタスクの失敗によるものでしょう。これは私の質問の更新です。

次のように列と行を追加すると、データテーブルに double を保持できるようになりました。

myDataTable.Columns.Add(columnName, typeof(double));
var dataAsStrings = line.Split(charDelimiters, StringSplitOptions.RemoveEmptyEntries);

// convert to doubles
var dataAsDouble = new double[dataAsStrings.Length];
for (var i = 0; i < dataAsStrings.Length; i++)
{
    var isConverted = Double.TryParse(dataAsStrings[i], out dataAsDouble[i]);
    if (!isConverted) rowData[i] = Double.NaN;
}

var objectNumbers = dataAsDouble.Cast<object>().ToList();
myDataTable.Rows.Add();

for (var j = 0; j < columns.Length; j++)
{
    myDataTable.Rows[myDataTable.Rows.Count - 1][j] = objectNumbers[j];
}

私にとって重要な部分は、列を typeof(double) として追加することでした。それをするまで、私は何もすることがありませんでした。これらのフォーラムでその提案を見つけたのは幸運でした。ご覧のとおり、このコードはすべてややこしいですが、単純な試みはうまくいきませんでした。これらの結果を取得するためのより簡単な方法を教えてもらえますか? 多分Linqを使った何か?

于 2012-08-20T15:32:20.577 に答える