0

有人可以帮我弄清楚我的代码有什么问题吗?

@foreach(var a in db.Query(selectQueryforSubj, currID))
            {   
                <tr>
                    <td>@a.SubjectCode</td> 
                    <td>@a.DescriptiveTitle</td>
                    <td>@a.Units</td>
                    <td>@a.Prereq</td>

            @foreach(var b in db.QueryValue("SELECT " +username+ " FROM Subjects WHERE SubjectId=@0", a.SubjectId))
                    {
                    <td>@b</td>
                    }
                </tr> 
           }

我有以不同用户名命名的列,我想根据我的查询“a”的 SubjectId 和以我正在查看的用户名命名的列加载其值(即他们的成绩)。

但是,会发生此错误。

无法将类型“ int”隐式转换为“ System.Collections.IEnumerable

我的带有“ QueryValue”的行以红色突出显示。

我知道我foreachQueryValue. 但我真的不知道我会用什么来代替。:(

4

1 回答 1

0

尝试在第二个 foreach 循环中使用 Query 而不是 QueryValue。QueryValue 将返回单个值,而 Query 将返回多个值的 IEnumerable,因此您可以像在最外层的 foreach 循环中那样枚举它们。如果您想获得单个值,则根本不要使用 foreach 循环。

样品 1:

@foreach(var a in db.Query(selectQueryforSubj, currID))
            {   
                <tr>
                    <td>@a.SubjectCode</td> 
                    <td>@a.DescriptiveTitle</td>
                    <td>@a.Units</td>
                    <td>@a.Prereq</td>

            @foreach(var b in db.Query("SELECT " +username+ " FROM Subjects WHERE SubjectId=@0", a.SubjectId))
                    {
                    <td>@b</td>
                    }
                </tr> 
           }

样品 2

@foreach(var a in db.Query(selectQueryforSubj, currID))
            {   
                <tr>
                    <td>@a.SubjectCode</td> 
                    <td>@a.DescriptiveTitle</td>
                    <td>@a.Units</td>
                    <td>@a.Prereq</td>

                    <td>db.QueryValue("SELECT " +username+ " FROM Subjects WHERE SubjectId=@0", a.SubjectId)</td>

                </tr> 
           }
于 2013-10-11T09:22:09.470 回答