c# - 用阿拉伯字母在字典中过滤不起作用
问题描述
例子 :
public static string MyCategoryTypeName= "الجيش";
public static Dictionary<int, string> StaticNames = new Dictionary<int, string>()
{
{الجيش" ,1"},
{الأمن العام" ,2"},
{أمن الدولة",3 "},
{الجمارك" ,4 "}
};
int selectedID = (from x in StaticNames where x.Key.Contains(MyCategoryTypeName) select x.Value).FirstOrDefault();
原来的阿拉伯语字符串替换为<arabic_string>
,因为 StackOverflow 的代码格式似乎与阿拉伯语不兼容。
我尝试过 Linq,我尝试遍历每个对象并检查相同的名称,但没有任何问题
int selectedID = (from x in StaticNames where x.Value.ToString().Contains(MyCategoryTypeName) select x.Value).FirstOrDefault();
selectedID = 0;
foreach (var item in StaticNames)
{
if (item.Key.Contains(person.CategoryTypeName))
{
selectedID = Convert.ToInt32(item.Value);
}
}
其中之一应返回一个整数(1 到 4)。它总是返回 0(这是整数的默认值)。
解决方案
而不是x.Value
使用x.key
,它应该可以工作
int selectedID = (from x in StaticNames where
x.Key.Contains("الجيش") select x.Value).FirstOrDefault();
您正在匹配值而不是键您的键包含您要匹配的字符串。
推荐阅读
- python - 将字典的第一项作为Python中的字典返回?
- python-3.x - python在文档字符串中自动添加类型提示
- javascript - 从范围列表中大写
- dataframe - PySpark 动态爆炸嵌套列 - 从使用 FOR 更改为更优化的解决方案
- mysql - MySQL 日志记录使用触发器更改。有没有更好的办法?
- python - 给定一个排序数字列表,根据数字之间的距离划分为子列表
- javascript - 使用带有浏览器内跨域登录的 cypress 对 Auth0 进行身份验证
- xcode - Xcode 13 编辑器内联错误不会消失
- unicode - 希伯来字符 Javascript 上的 Unicode 组合
- java - Thymeleaf 片段处理器和 Spring 5