2012-04-12 32 views
0

我有以下查詢,選擇名爲dtRows的數據表中的行。 dtRows包含2列FieldId和FieldValue,FieldId包含如下值。當我選擇FieldId的時,我需要去掉前兩個字符並將最後一個字符轉換爲不同的字符串。例如,1_3_1應該是3_FirstName,1_3_2應該是3_LastName,1_3_3應該是3_MiddleName。任何人有任何建議?非常感謝任何想法!如何在LINQ中對字符串執行轉換?

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") 
        }; 
+1

你會怎麼做,如果最後一個字符是不是在範圍1-3? – 2012-04-12 19:03:39

+0

只需切換fieldId.Last()並把這些值... – Servy 2012-04-12 19:05:50

+0

@Jon Skeet,我需要保留最後一個字符的所有可能的值和相應的名稱在一些變量,然後查找值並檢索適當的名字。正如Phoog所建議的那樣,編寫一個單獨的函數適用於我,但我正在查看是否可以使用Linq。謝謝! – Jyina 2012-04-12 20:13:39

回答

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 
} 
相關問題