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”)依赖于我正在查看的帐户(可以从不同的表中检索)。