有人可以帮我弄清楚我的代码有什么问题吗?
@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
”行以红色突出显示。
我知道我不应该为foreach
使用“QueryValue
”。但我真的不知道我会用什么代替。 :(
答案 0 :(得分:0)
在第二个foreach循环中尝试使用Query而不是QueryValue。 QueryValue将返回单个值,而Query将返回IEnumerable的多个mupltiple值,因此您可以像在最外层的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>
}