示例:
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(这是整数的默认值)。
答案 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 }
};
在控制台中测试此代码,然后在您的项目中使用