具有动态值的QueryValue,它取决于列名

时间:2013-10-11 08:15:32

标签: c# asp.net sql-server

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

@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”。但我真的不知道我会用什么代替。 :(

1 个答案:

答案 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> 
           }