在带有阿拉伯字母的字典中进行过滤不起作用

时间:2019-01-04 07:59:26

标签: c# entity-framework linq

enter image description here enter image description here试图在字典中过滤出类似的阿拉伯字母键。

示例:

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

2 个答案:

答案 0 :(得分:2)

使用 Run-time error '1004' Application-defined or object-defined error 代替x.Value,它应该可以工作

x.key

您要匹配的值不是键,您的键包含要匹配的字符串。

答案 1 :(得分:0)

此代码必须有效

static void Main(string[] args)
    {
        int selectedID = (from x in StaticNames where x.Key.Contains(MyCategoryTypeName) select x.Value).FirstOrDefault();
        Console.WriteLine(selectedID);
        Console.ReadKey();
    }
    public static string MyCategoryTypeName = "الجيش";
    public static Dictionary<string, int> StaticNames = new Dictionary<string, int>()
        {
            {"الجيش" ,1},
            {"الأمن العام" ,2},
            {"أمن الدولة",3 },
            {"الجمارك" ,4 }
        };

在控制台中测试此代码,然后在您的项目中使用