C# 尝试在查询中进行查询,但不起作用

C# 尝试在查询中进行查询,但不起作用,c#,sql,foreach,parameter-passing,C#,Sql,Foreach,Parameter Passing,我试图用SQL中的数据填充一个表,为了得到预期的结果,我必须在query中进行查询 以下是我试图做到的: // Queries var transakcionet = db.Query("SELECT * FROM Ditari WHERE IDUrdheresa = @0", ID); // IDKlientit has unique value so the below query will always return one row var klienti = "SELECT cEmer

我试图用SQL中的数据填充一个表,为了得到预期的结果,我必须在query中进行查询

以下是我试图做到的:

// Queries
var transakcionet = db.Query("SELECT * FROM Ditari WHERE IDUrdheresa = @0", ID);

// IDKlientit has unique value so the below query will always return one row
var klienti = "SELECT cEmertimi_i_klientit FROM Klienti WHERE (IDKlientit = @0)";


<tbody>

@foreach(var transakcioni in transakcionet){
   <tr>
      // This works
      @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
         <td>@kontoja.cNumri_i_kontos</td>
      }
      // This is what is causing the error (i guess)
      @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
         <td>@klja.cEmertimi_i_klientit</td>
      }
   </tr>
</tbody>
我不知道我错过了什么,但是

以下是错误消息:

没有为一个或多个必需参数提供值

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.Data.OleDb.OLEDBEException:未为一个或多个必需参数提供值


@韦伯2K6是对的。查询中有空值

首先,确保它不会崩溃。您可能需要在文件顶部添加@using System.Linq:

@foreach(var transakcioni in transakcionet.Where(t => t.IDKontos != null && t.IDKlientit != null){
<tr>
    // This works
    @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
        <td>@kontoja.cNumri_i_kontos</td>
    }
    // This is what is causing the error (i guess)
    @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
        <td>@klja.cEmertimi_i_klientit</td>
    }
</tr>

但这并不能解释为什么这个值首先是空的。显然,只有当那些ID*属性可以为空时,这才有意义,我想,对于您收到的错误消息,情况就是如此。

您的代码修复没有起作用,但您的建议起了作用

当它为空时我处理过,现在它按我想要的方式工作

这就是我所做的:

@foreach(var transakcioni in transakcionet){
  <tr>
     @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
             <td>@kontoja.cNumri_i_kontos</td>
         }
    @if(transakcioni.IDKlientit == null){
        <td>No name</td>
    }else {
            foreach(var kli in db.Query(klienti, transakcioni.IDKlientit)){
            <td>@kli.cEmertimi_i_klientit</td>
        }}

您能展示db.Query的实现吗?db=Database.Opennameofdb;属性transakcioni.IDKlientit是否始终有效!=空?是的,它是此表的键…什么不起作用?Linq似乎比foreach循环中的null检查更优雅。