2014-07-11 65 views
0

我想在我的程序的方法,它返回一個LINQ查詢的產生,這裏是功能:獲取字段從沒有輸入<Ienumerable>對象C#LINQ

public static IEnumerable<object> ConsultasSQL(int TipoConsulta) 
{  
    SQLDataContext DC = new SQLDataContext(); 
    IEnumerable<object> consulta = (dynamic)null; 
    switch(TipoConsulta) 
    { 
     case 1: // Registro en Linea 
      DC = SQLDataContext.GetDataContext("Tiendas", componerCS()); 
        consulta = from tienda in DC.Tiendas 
        where tienda.Cod__Tienda == Globales.Tienda 
        select tienda; 
      break; 

     case 2:// Efectivo_Local 
      DC = SQLDataContext.GetDataContext("Formas de Pago",componerCS()); 
       consulta = from pagos in DC.Formas_de_Pago 
       where pagos.Efectivo_Local == 1 
       select pagos; 
      break; 

     case 3: // Productos 
       DC = SQLDataContext.GetDataContext("Item",componerCS()); 
       consulta = from Productos in DC.Item 
       select Productos; 
      break; 

    } 

    return consulta.ToList(); 
} 

我在其他地方我的程序的調用此函數像這樣:

public static void Efectivo_local() 
{ 
    var consulta = ConsultasSQL(3); 
    // Globales.IdPagoLocal = consulta.First().ID_Pago; 
    //Globales.DesriPagoLocal = consulta.First().ID_Pago; 
} 

代碼工作,如果我把CONSULTA作爲一個DataGridView數據源它顯示我的數據,但我有兩個問題:

1 - 如果我把數據gridview1.datasource = consulta.first() - >它顯示我什麼都沒有:( 2 - 我不知道如何檢索consulta.tolist()的具體領域的價值

正如你可以看到下面的圖片,諮詢有144條記錄,我想檢索 第二行的字段1,它的樣子和數組? [1,1] ??

http://i.imgur.com/5xHe8Hi.jpg

回答

0

爲了獲得特定的值,你必須做的值類型轉換,所以改變SQLDataContext:

private SQLDataContext DC = new SQLDataContext(); 
... 
public static IEnumerable<object> ConsultasSQL(int TipoConsulta) 
{ 
    ... 
} 

並添加以下代碼:

var consulta = ConsultasSQL(3) as List<DC.Item.Productos>; 
if (consulta != null) { 
    datagridview1.datasource = consulta.first(); 
    Globales.IdPagoLocal = consulta.Find(c => c.id == 123456).ID_Pago; 
} 

但我建議你更改代碼的傑夫·科赫說... :-)

0

你可以一個接口添加到您的數據類。也就是說,如果您知道您期望在運行時獲得的類型,爲什麼您根本使用IEnumerable<object>?爲什麼不有三個獨立的功能,每個功能都有一個明確的目的?這將是更好的OO設計,imo。

+0

感謝您的答覆,我應該使用什麼類型? ,這只是大約80個SQL查詢中的三個,我更喜歡你擁有所有的功能。 – user3829956