首页 > 解决方案 > 用阿拉伯字母在字典中过滤不起作用

问题描述

在此处输入图像描述在此处输入图像描述试图在字典中过滤以阿拉伯字母书写的类似键。

例子 :

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(这是整数的默认值)。

标签: c#entity-frameworklinq

解决方案


而不是x.Value使用x.key,它应该可以工作

  int selectedID = (from x in StaticNames where 
  x.Key.Contains("الجيش") select x.Value).FirstOrDefault();

您正在匹配值而不是键您的键包含您要匹配的字符串。


推荐阅读