IEnumerable <selectlistitem>错误问题</selectlistitem>

时间:2010-03-26 09:52:08

标签: c#

我有以下代码,但我错误

  

错误6 foreach语句无法对'int'类型的变量进行操作,因为'int'不包含'GetEnumerator'的公共定义C:\ Dev \ DEV \ Code \ MvcUI \ Models \ MappingModel.cs 100 13 MvcUI < / p>

我该如何解决这个问题?

注意:

string [] projectID;


    Class Project
    {
        int id {get; set;}
        string Name {get;set;}
    }

 public IEnumerable<SelectListItem> GetStudents()
    {
        List<SelectListItem> result = new List<SelectListItem>();
        foreach (var id in Convert.ToInt32(projectID))
        {
            foreach( Project project in Project.Load(id))
                result.Add(new SelectListItem
                {
                    Selected =  false,
                    Text = emp.ID.ToString(),
                    Value = emp.Name
                });

            return result.AsEnumerable();
        }


    }

4 个答案:

答案 0 :(得分:2)

您需要在foreach语句中将projectId中的字符串转换为int。把转换放在foreach中。

试试这个

public IEnumerable<SelectListItem> GetStudents()
{
    List<SelectListItem> result = new List<SelectListItem>();
    foreach (var id in projectID)
    {
        int intId = Convert.ToInt32(id);
        foreach( Employee emp in Project.Load(intId))
            result.Add(new SelectListItem
            {
                Selected =  false,
                Text = emp.ID.ToString(),
                Value = emp.Name
            });
    }
    return result.AsEnumerable();
}

还有其他问题。你是从循环内部返回的,所以你只能让它为第一个id工作。我试着在上面的代码中纠正它

答案 1 :(得分:2)

projectID似乎是string[],您尝试将其转换为int[]。如果是这样,您可以执行以下操作以使foreach循环正常工作

foreach (var id in projectID.Select(x => Convert.ToInt32(x))) {
  ...
}

答案 2 :(得分:0)

Convert.ToInt32(projectID)不会返回一个int集合,它会返回一个Int实例,因此你不能使用foreach语句。

你想要达到什么目标?

答案 3 :(得分:0)

public IEnumerable<SelectListItem> GetStudents()
{
    return from id in projectID
           from employee in Project.Load(int.Parse(id))
           select new SelectListItem
           {
               Text = employee.ID.ToString(),
               Value = employee.Name
           };
}

备注:您的命名约定有点奇怪:GetStudents使用返回员工的Project.Load。