2009-04-27 37 views
7

Ich versuche, geben Sie die Daten in der Datenbank einzufügen, die zwei Tabellen hatKonnte nicht das Objekt von Typ ‚System.Data.Linq.DataQuery`1 [System.Int32]‘ ‚System.IConvertible‘

Produkte
(ProductID): 1
(IDNumber): 200.900.110
(Product): Pepsi

Bestellen
(OrderID): 1 (Autoinkrement von 1)
(ProductID): 1
(Datum): 1/1/2009

Der Code ist dies:

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(); 

Nachdem ich laufe es mir die Fehlermeldung wie folgt gibt:

Kann Objekt vom Typ werfen ‚System.Data.Linq.DataQuery `1 [System.Int32] System.IConvertible '

+3

Ich hoffe niemandem - Ich habe den Einzug behoben, um zu zeigen, wo die Aussagen klarer sind. –

Antwort

27

Ihre Anfrage‘ eingeben':

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

gibt kein einzelnes Ergebnis, sondern eine Ergebnisliste zurück. In Ihrem Fall ist dies eine Liste mit einer einzelnen Produkt-ID. Sie sollten es so ändern:

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

Wenn Sie Ihren Code im Debugger ausführen und bewegen Sie die Maus über die idNum Variable, werden Sie sehen, dass es eine DataQuery Instanz ist.

Verwandte Themen