2017-11-10 154 views
0

我有這樣的方法:檢索一個實體值添加到返回參數

private List <ReportParameter> ParametrosReporte() { 
     List <ReportParameter> Parametros = new List <ReportParameter>(); 
     try { 
     int ? int_Ejercicio = this.radcmbEjercicio.SelectedItem == null ? 0 : this.radcmbEjercicio.SelectedValue.ToInt(); 
     int ? int_Periodo = this.radcmbPeriodo.SelectedItem == null ? 0 : this.radcmbPeriodo.SelectedValue.ToInt(); 
     int ? int_BSC = this.radcmbBSC.SelectedItem == null ? 0 : this.radcmbBSC.SelectedValue.ToInt(); 

     Parametros.Add(Reportes.ParametrosReporte("pe_Ejercicio", int_Ejercicio.ToString())); 
     Parametros.Add(Reportes.ParametrosReporte("pe_Mes", int_Periodo.ToString())); 
     Parametros.Add(Reportes.ParametrosReporte("pe_BSC", int_BSC.ToString())); 


     catBSC _catBSC = new catBSC() { 
      mdUsuarioCaptura = new Entidades.Usuario() { 
      UsuarioID = ((Usuario) Session["User"]).UsuarioID, 
      } 
     }; 
     Parametros.Add(Reportes.ParametrosReporte("pe_Usuario", UsuarioID)); 

     return Parametros; 
     } catch (Exception ex) { 
     throw new System.ArgumentException("Error en ParametrosReporte", ex); 
     } 
    } 

正如你可以看到我有邏輯檢索誰在爲登錄用戶:

catBSC _catBSC = new catBSC() { 
       mdUsuarioCaptura = new Entidades.Usuario() { 
       UsuarioID = ((Usuario) Session["User"]).UsuarioID, 
       } 
      }; 

但在此之前檢索它,我想它調用到Parametros.Add這樣的:

Parametros.Add(Reportes.ParametrosReporte("pe_Usuario", UsuarioID)); 

但我不能,因爲UsuarioID超出範圍,它拋出我

UsuarioID不會在目前情況下

我怎樣才能把它和重視我的存在Parametros.Add

+0

您可以在新的CatBSC範圍之外創建一個局部變量,並在該範圍內爲其分配UsuarioID。 –

+0

我嘗試了但它不工作,我不記得評論它,或者你可以顯示你的方法去做它,這可能我做了不正確的形式@AnthonyVoelker – Pepe

+0

你嘗試在變量附近聲明變量你宣佈新的名單?我認爲使這個複雜化的事情之一是使用對象初始化 –

回答

1

您只需創建一個局部變量您的catBSC創作上面,然後用在兩個位置:

var usuarioID = ((Usuario) Session["User"]).UsuarioID 

catBSC _catBSC = new catBSC() { 
    mdUsuarioCaptura = new Entidades.Usuario() { 
     UsuarioID = usuarioID 
    } 
}; 

Parametros.Add(Reportes.ParametrosReporte("pe_Usuario", usuarioID)); 

您可以用實際類型替換var,但我不想做一個假設關於這是你的情況。

+0

它應該工作,但我發現更簡單的解決方案,如:'var usuarioID = new Usuario(){UsuarioID =((Usuario)Session [「User」] ).UsuarioID};' – Pepe

+0

這是不同的。在這種情況下,'usuarioID'將是'Usuario'的一個實例,而不是任何'UsuarioID'。 –

+0

真的嗎?讓我測試兩種情況下的兩個例子 – Pepe

相關問題