具有动态值的查询值,该值取决于列名

本文关键字:取决于 查询 动态 | 更新日期: 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> 
           }