2009-04-27 11 views
7

próbuję wstawić dane do mojej bazy danych, która ma 2 tabelNie można rzutować obiektu typu „System.Data.Linq.DataQuery`1 [System.Int32]” wpisz „System.IConvertible”

Produkty
(ProductID): 1
(Identyfikator): 200900110
(ProductName): Pepsi

Zamówienie
(OrderID): 1 (Auto Zwiększ o 1)
(ProductID): 1
(Data): 1/1/2009

Kod jest to:

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

Po uruchomieniu wyskakuje mi błąd jak poniżej:

Nie można rzutować obiektu typu „System.Data.Linq.DataQuery `1 [System.Int32]” wpisać 'System.IConvertible'

+3

Mam nadzieję, że nikt nie ma umysłu - poprawiłem wcięcie, aby pokazać, gdzie są wyraźniejsze stwierdzenia. –

Odpowiedz

27

zapytanie:

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

nie zwraca pojedynczego wyniku, ale listę wyników. W twoim przypadku będzie to lista zawierająca pojedynczy identyfikator produktu. Należy zmodyfikować go do tego:

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

Jeśli uruchomić kod w debugera i umieść kursor myszy nad zmiennej idNum, zobaczysz, że jest to instancja DataQuery.

Powiązane problemy