2012-04-12 69 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 
} 
相关问题