こんにちは、DataTable からテキストを取得する必要があるという問題があります。私はcsvファイルをデータテーブルに読み込んで、特定の行にどのようにアクセスできるのか疑問に思っています.Maデータテーブルにはさまざまなテキストの翻訳が含まれており、さまざまな言語の列があります.
英語、ドイツ語、イタリア語、フランス語、...
私が取得する必要があるのは、英語のテキストの翻訳です。
私は結果なしで次のことを試しました:
(csvファイルに重複があるので削除します。)
printf("reading csv file...\n");
DataTable^ table = GetDataTable( L"LangTexts.csv", '|' );
DataSet^ data = gcnew DataSet("LANGS");
printf("removing duplicate rows...\n");
RemoveDuplicateRows( table, L"English" );
table->TableName = "LanguageText";
table->Namespace = "Nmspce";
printf("saving as XML\n");
data->WriteXml( "LangTexte.xml" );
table->PrimaryKey = gcnew array<DataColumn^> {table->Columns["English"]};
// 機能しません。列が一意ではないと表示されます (説明: Diese Spalten haben momentan keine eindeutigen Werte.)
その後、次のようなxmlファイルがあります。
<?xml version="1.0" standalone="yes"?>
<Nmspce>
<LanguageText xmlns="Nmspce">
<English>Back</English>
<Deutsch>Zurück</Deutsch>
<Français>Retour</Français>
<Svenska>Tillbaka</Svenska>
<Português>voltar</Português>
<Español>Volver</Español>
<Slovensko>Nazaj</Slovensko>
<Polski>Powrot</Polski>
<Suomi>Takaisin</Suomi>
<Nederlands />
<Česky>Zpět</Česky>
<Italiano>Indietro</Italiano>
<Română>Înapoi</Română>
</LanguageText>
....
特定のenlischテキストのドイツ語テキストなどを取得するにはどうすればよいですか?
私は運がないのでこれを試しました:
これは機能しません。「from」はコンパイラーによって認識されません。
String ^strToGet = "Torque";
String^ sDeutsch = ( From DataRow dr in table->Rows where safe_cast<String^>( table["English"] )
== strToGet select ( String^ )table["German"] )->FirstOrDefault();
これは機能しません。filteredrows 配列は空です:
array<DataRow^>^ filteredRows = table->Select( String::Format( "'{0}' like '%{1}%'", "English", strToGet) );
String^ res;
if(filteredRows != nullptr && filteredRows->Length > 0)
res = cli::safe_cast<String^>(filteredRows[0]["Deutsch"]);
else
res= strToGet;
これは、テーブルに主キーがないことを訴えています。
DataRow^ r = table->Rows->Find(strToGet);
if(r != nullptr)
{
String^ sDe = cli::safe_cast<String^>(r["Deutsch"]);
}
問題を解決するにはどうすればよいですか? または、csv ファイルからの翻訳リストを処理するためのより良い方法はありますか?