具有动态值的查询值,该值取决于列名
本文关键字:取决于 查询 动态 | 更新日期: 2023-09-27 18:34:57
有人可以帮助我找出我的代码出了什么问题吗?
@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
"以红色突出显示。
我知道我不应该为我的QueryValue
使用"foreach
"。但我真的不知道我会用什么来代替。:(
尝试在第二个 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>
}