0

dtRowsと呼ばれるデータテーブルから行を選択する以下のクエリがあります。dtRowsにはFieldIdとFieldValueの2つの列が含まれ、FieldIdには次のような値が含まれます。FieldIdを選択するときは、最初の2文字を削除し、最後の文字を別の文字列に変換する必要があります。たとえば、1_3_1は3_FirstName、1_3_2は3_LastName、1_3_3は3_MiddleNameである必要があります。誰か提案がありますか?アイデアをありがとう!

FieldId値:

1_1_1
1_1_2
1_1_3
1_2_1
1_2_2
1_2_3
1_3_1
1_3_2
1_3_3

var Names = from row in dtRows.AsQueryable()
                   where Convert.ToInt16(row.Field<string>("FieldId").Substring(2)) == prefix
                   select new
                   {
                       fieldId = 
           fieldValue = row.Field<string>("FieldValue")
                   };
4

1 に答える 1

0

さまざまな文字列を計算する関数を作成し、次のように呼び出します。

var Names = from row in dtRows.AsQueryable() 
               let id = row.Field<string>("FieldId")
               where Convert.ToInt16(id.Substring(2)) == prefix 
               select new 
               { 
                   fieldId = ConvertString(id),
                   fieldValue = row.Field<string>("FieldValue") 
               }; 

private string ConvertString(string original)
{
    // implementation left as an exercise
}
于 2012-04-12T19:05:34.893 に答える