2011-08-19 11 views
5

Tengo uncómo obtener un solo valor usando marco de la entidad

 table product with colums product_id 
           prodcut_name 
           category_id 

       another table category 
           category_id 
           category_name 

y estoy poblando estos detalles del producto usando DataGridView que funciona bien

y necesito para obtener el nombre de la categoría para la fila seleccionada en DataGridView por lo que he hecho como esto ....

 private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e) 
     { 
       string productname = Convert.ToString(selectedRow.Cells["productnam"].Value); 
       var categoryids = from cats in abc.products 
           where cats.product_Name.Equals(productname) 
           select cats.category_Id; 


      var catogynames = from categorytypes in abc.categories 
           where categorytypes.category_Name.Equals(categoryids) 
           select categorytypes.category_Name; 


      string categorynames = catogynames;  

     }        

tiene un

error : cannot implicitly convert type sysytem.linq.iqueryble<string> to string ... 

lo que tengo que hacer para obtener el nombre de la categoría única de celda seleccionada en la columna de productnam productgridview

alguna sugerencia .. .. pls de

muchas gracias ....

código modificado : tiene un error:

not supported exception: 

Unable to create a constant value of type 'System.Object'. Only primitive types ('such as Int32, String, and Guid') are supported in this context. 

Respuesta

7

Su consulta devuelve un objeto de consulta que sea tienen como una colección. Puede usar First, FirstOrDefault, Single, o SingleOrDefault para recuperar el primer o único elemento de la consulta, respectivamente.

var categoryid = (from cats in abc.products 
        where cats.product_Name.Equals(productname) 
        select cats.category_Id).SingleOrDefault(); 


string categoryname = (from categorytypes in abc.categories 
         where categorytypes.category_Name.Equals(categoryid) 
         select categorytypes.category_Name).SingleOrDefault(); 
+0

thanq ... ¿puede hacerme un favor más ...? Es posible definir las relaciones de mapeo programáticamente utilizando entity y C# .. Quiero especificar la clave foránea para una tabla programáticamente .. es Es posible ... ¿tiene alguna idea ... –

+0

tiene un error ¿Podría ver mi código modificado –

+0

¿Podría echar un vistazo a mi pregunta ... –

0

su problema con la fundición está aquí

string categorynames = catogynames; 

catogynames es IQueryble. Se puede hacer algo como esto,

List<String> categorynames = catogynames.ToList(); 

O puede recorrer catogynames.

P.S por favor revise sus nombres de variable: D.

+0

cómo puedo hacer eso porque quiero enviar un valor para otro formulario depende de la celda de datagridview, haga clic en –

+0

¿cómo puede hacer qué? – Incognito

+0

puedo usar el bucle foreach para obtener los nombres únicos de cato ... –

Cuestiones relacionadas