嗨我有這個問題,我需要從DataTable中獲取文本。 我讀了一個csv文件到數據表,現在想知道我怎樣才能訪問一個特定的行 Ma Datatable包含各種文本的翻譯,並有不同語言的列 從DataTable或XML中找到特定的項目
英語,德語,意大利語,法語,...
我需要得到的是翻譯的英文文本。
我試過沒有結果如下:
(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"]};
//不起作用,它說的列不是唯一的(Zusätzliche信息詳細信息: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文本?
我想這沒有運氣:
這是不行的,「從」不被編譯器知道:
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文件的翻譯列表?