Фильтрация по словарю с арабскими буквами не работает - PullRequest
0 голосов
/ 04 января 2019

enter image description hereenter 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 голосов
/ 08 января 2019

этот код должен работать

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 }
        };

проверить этот код в консоли, а затем использовать в вашем проекте

0 голосов
/ 04 января 2019

Вместо x.Value используйте x.key, и оно должно работать

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

Вы соответствуете значениям, а не ключ, ваш ключ содержит строку, которую вы хотите сопоставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...