我有一个像这样定义的对象:
public class Problem
{
public Problem()
{
this.Questions = new HashSet<Question>();
}
public string Answer { get; set; }
}
我需要检查对象problem
中的每个问题并操纵一些数据。这是我尝试过的:
foreach (Question question in problem)
{
if (question.AssignedTo == null)
{
question.QuestionStatusId = 6;
}
else
{
question.AssignedDate = DateTime.UtcNow;
question.QuestionStatusId = 5;
}
}
但这不起作用。我收到一条错误消息:
严重级代码说明项目文件行 错误CS1579 foreach语句无法对“Entities.Models.Core.Problem”类型的变量进行操作,因为 'Entities.Models.Core.Problem'不包含'GetEnumerator'的公共定义
我还能采取其他方式吗?请注意,我使用new HashSet<Question>
的原因是因为我被告知如果有独特的问题,这是执行此操作的方法。
答案 0 :(得分:5)
您需要指定要迭代HashSet
中包含的Problem
,而不是Problem
本身:
foreach (Question question in problem.Questions) {
...
}
由于HashSet
的性质,问题可能以任何顺序出现。如果您想维护问题的特定顺序,则应使用List
。确实HashSet
的元素是唯一的,但这并不意味着如果您的元素是唯一的,那么 使用HashSet
。