2013-10-11 99 views
0

有人可以帮我弄清楚我的代码有什么问题吗?具有取决于列名称的动态值的QueryValue

@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 [email protected]", a.SubjectId)) 
        { 
        <td>@b</td> 
        } 
       </tr> 
      } 

我有不同的用户名命名的栏目,我想根据我的查询人,我正在查看的用户名命名的“一”和列的SubjectId加载其值(这是他们的成绩)。

但是,会发生此错误。

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

和我行已为“QueryValue”以红色突出显示。

我知道我不应该使用“foreach”作为我的QueryValue。但我真的不知道我会用什么。 :(

+1

有一件事是你的代码错误为t你似乎正在写一个带有数据库查询的剃须刀视图! ;-) –

+1

另一件事是,你的查询是打开的SQL注入攻击 –

+1

看来你的QueryValue返回一个整数。你有QueryValue方法的源代码吗? – Robert

回答

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 [email protected]", 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 [email protected]", a.SubjectId)</td> 

       </tr> 
      } 
+0

我尝试了所有的建议并尝试了一些东西。我在'主题'表下有一个名为'test2'的专栏,这是我以前创建的帐户。我使用(“SELECT test2 FROM Subjects WHERE SubjectId = @ 0”,a.SubjectId)而不是使用+ username +的。它的工作。它显示了我正在寻找的数据。但是我需要column_name('test2')依赖于我正在查看的帐户(可以从不同的表中检索)。 –