Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有动态值(取决于列名)的QueryValue_C#_Asp.net_Sql Server - Fatal编程技术网

C# 具有动态值(取决于列名)的QueryValue

C# 具有动态值(取决于列名)的QueryValue,c#,asp.net,sql-server,C#,Asp.net,Sql Server,有人能帮我找出我的代码出了什么问题吗 @foreach(var a in db.Query(selectQueryforSubj, currID)) { <tr> <td>@a.SubjectCode</td> <td>@a.DescriptiveTitle</td>

有人能帮我找出我的代码出了什么问题吗

@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> 
           }
@foreach(db.Query中的变量a(selectQueryforSubj,currID))
{   
@a、 主题代码
@a、 描述标题
@a、 单位
@a、 预请求
@foreach(db.QueryValue中的变量b(“从SubjectId=@0的Subjects中选择“+username+”,a.SubjectId))
{
@b
}
}
我有以不同用户名命名的列,我想根据查询“a”的主题和以我正在查看的用户名命名的列加载其值(即它们的等级)

但是,会发生此错误

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

我的行有一个“
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> 
           }
@foreach(db.Query中的变量a(selectQueryforSubj,currID))
{   
@a、 主题代码
@a、 描述标题
@a、 单位
@a、 预请求
@foreach(db.Query中的变量b(“从主语中选择“+username+”,其中主语id=@0”,a.SubjectId))
{
@b
}
}
样本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> 
           }
@foreach(db.Query中的变量a(selectQueryforSubj,currID))
{   
@a、 主题代码
@a、 描述标题
@a、 单位
@a、 预请求
db.QueryValue(“从主语ID=@0的主语中选择“+username+”,a.SubjectId)
}

代码的一个错误是,您似乎正在编写一个包含数据库查询的razor视图!;-)另一个错误是,您的查询被打开以进行sql注入攻击。您的查询值似乎返回一个整数。你们有QueryValue方法的源代码吗?我需要确认一下,伙计们。我真的可以在SELECT语句中使用+username+来表示与我正在查看的列的用户名相等的列名称吗?我尝试使用通常的SELECT语句,结果成功了。但是我需要列的名称取决于我正在查看的用户名。我尝试了你所有的建议并尝试了一些东西。我在“Subjects”表下有一个名为“test2”的列,这是我以前创建的一个帐户。我使用了(“从SubjectId=@0的主题中选择test2”,a.SubjectId),而不是使用+用户名+。它成功了。它显示了我正在寻找的数据。但是我需要列名称(“test2”)依赖于我正在查看的帐户(可以从不同的表中检索)。