当在Lambda表达式中使用三元条件运算符时,Linq select返回错误结果

时间:2019-01-13 12:08:15

标签: c# linq

我有一个阿拉伯语字符串,我试图将其中的数字值更改为英文,其余部分保持不变。

这是我的字符串:

string x = "یکشنبه ۲۳ دی ۱۳۹۷ ۱۰:۳۰:۰۰"

这就是我的转换方式:

x = string.Join("", x.Select(a => a >= '۰' || a <= '۹' ? (char)(48 + a - '۰') : a));

有趣的是,应该将数字字符转换为英文的部分可以正常工作,但是返回字符本身(未修改)的部分会发生变化。此转换的结果:

←エニィヌ怒23怒ッ怒1397怒10梁30梁00

1 个答案:

答案 0 :(得分:2)

您的情况有误-将||更改为&&并将۱替换为۰

x = string.Join("", x.Select(a => a >= '۰' && a <= '۹' ? (char)(48 + a - '۰') : a));