我有对象列表,我正在寻找具有指定任务名的对象。大多数情况下,它没有任何问题。但是..如果我在taskname中寻找包含它的对象:
31022000-1-00
它使用taskname:
返回对象** ******** 31021242-1-00
还有更多相同问题的案例。但正如我所说,它主要是返回正确的值。
我的代码:
if (ProjectTasks.Count(t => t.Name.Contains(task.Name)) == 1)
{
ProjectTask MatchingTask = ProjectTasks.FirstOrDefault(t => t.Name.Contains(task.Name));
UpdateTask(task, MatchingTask);
}
我做错了什么?有什么想法吗?
答案 0 :(得分:-1)
您正在使用Contains,因此行为是预期的。如果您需要完全匹配,请改用Equals。
ProjectTask MatchingTask = ProjectTasks.FirstOrDefault(t => t.Name.Equals(task.Name));
if (MatchingTask != null)
{
UpdateTask(task, MatchingTask);
}
答案 1 :(得分:-1)
为什么在只有一个具有匹配名称的任务的情况下采取行动?还有更多吗?如果不是 - 你可能应该重构你的代码
var MatchingTask = ProjectTasks.FirstOrDefault(t => t.Name.Contains(task.Name));
if (MatchingTask !=null){
UpdateTask(task, MatchingTask);
}