Windows下C#调用TaskService查找含XYZ的任务未匹配问题咨询
问题分析与解决
哦,我一眼就发现问题所在了!你在过滤条件里用了*XYZ*的通配符,但string.Contains()方法本身就是用来检查目标字符串是否包含指定子串的,它不需要额外的通配符——这里的星号会被当成普通字符来匹配,相当于你在找名称里包含*XYZ*(带星号)的任务,而不是包含XYZ的任务,这自然就找不到符合条件的项啦。
修正后的代码
把过滤条件里的星号去掉就可以正常工作了:
using (TaskService ts = new TaskService()) { foreach(Task f in ts.FindAllTasks(x => x.Name.ToUpper().Contains("XYZ"), true )) { f.Run(); } }
额外说明(如果需要支持通配符)
如果你之后需要更灵活的通配符匹配(比如XYZ*或者*XYZ),可以改用正则表达式来实现,比如:
using (TaskService ts = new TaskService()) { foreach(Task f in ts.FindAllTasks(x => Regex.IsMatch(x.Name.ToUpper(), @"XYZ.*"), true )) { f.Run(); } }
这里的@"XYZ.*"表示匹配以XYZ开头的任务名称,你可以根据需求调整正则表达式的规则。
内容的提问来源于stack exchange,提问作者Jeb50
相关产品推荐
相关产品推荐

