2009-04-27 49 views
7

Estoy tratando de insertar los datos en mi base de datos que tiene 2 mesasNo se puede convertir objeto de tipo 'System.Data.Linq.DataQuery`1 [System.Int32]' al tipo 'System.IConvertible'

productos
(ProductID): 1
(IDNumber): 200900110
(ProductName): Pepsi

Solicitar
(IdPedido): 1 (incremento automático por 1)
(ProductID): 1
(Fecha): 1/1/2009

El código es el siguiente:

var db = new ProductOrder(); 
var idNum = from p in db.Product 
      where p.IDNumber == 200900110 
      select p.ProductID; 

var order = new Order(); 
      order.productID = Convert.ToInt32(idNum); 
      order.Date = DateTime.Now; 
db.Order.InsertOnSubmit(nTime); 
db.SubmitChanges(); 

Después de lo ejecuto me da el error como este:

No se puede convertir objeto de tipo 'System.Data.Linq.DataQuery `1 [System.Int32]' al tipo 'System.IConvertible'

+3

Espero que nadie le importe: he arreglado la sangría para mostrar dónde están las afirmaciones con más claridad. –

Respuesta

27

Su consulta:

from p in db.Product 
where p.IDNumber == 200900110 
select p.ProductID 

no devuelve un solo resultado sino una lista de resultados. En su caso, esta será una lista que contiene una única identificación de producto. Debe modificar a esto:

(from p in db.Product 
where p.IDNumber == 200900110 
select p.ProductID).Single() 

Si ejecuta su código en el depurador y se pasa el ratón sobre la variable idNum, verá que es una instancia de DataQuery.

Cuestiones relacionadas