2010-11-04 11 views
8

Non ho mai usato LINQ prima e ho riscontrato un errore in un'applicazione che lo utilizza. Si tratta di un VB.NET (NET 2.0) progetto in Visual Studio 2008.Importazioni e riferimenti necessari per utilizzare LINQ

Qui è il codice incriminato:

Dim orderedRows = From r In resultRows Order By r.FIELDNAME Select r 

E qui è l'errore (nomi cambiati in qualcosa di generico, ma per il resto preciso) :

Expression of type '1-dimensional array of 
Company.OurLibrary.FunctionalArea.Library.StoredProcStuff.USP_MYPROC.ResultRow' 
is not queryable. Make sure you are not missing an assembly 
reference and/or namespace import for the LINQ provider. 
C:\project\filename.vb 

Così riconosco che ho bisogno di importare librerie LINQ. This link mi ha portato ad aggiungere "Imports System.Linq" al file, ma quello è un riferimento non risolto. Basato sullo stesso link, ho pensato di aggiungere un riferimento a "System.Core" al mio progetto, ma non è elencato come opzione disponibile quando provo ad aggiungere un riferimento (né è già stato controllato).

Sono sicuro che mi manca qualcosa di base. Qualcuno può indicarmi la giusta direzione?

TL; DR: Che cosa devo fare affinché LINQ funzioni?

+0

Quindi, se il gruppo di destinazione è impostato su .Net3.0 o versione successiva, il sistema ha installato .NET 3.0 o versione successiva? Altrimenti, non puoi aggiungerlo ai riferimenti del progetto? – jcolebrand

+0

@drachenstern: il sistema ha installato .NET 3.5 e 4.0 anche per questo. Ma l'obiettivo per questa applicazione è 3.5. – JosephStyons

+0

Cosa intendi con "VB.NET (versione 2.0)"? La versione di VB fornita con VB 2008 era VB 9, non 2 (VB2 eseguito su DOS). –

risposta

8

Aggiornamento: sulla base delle osservazioni rivolte .NET 2.0 e che tentano di utilizzare System.Linq si tradurrebbe in un errore di compilazione come segue:

Namespace or type specified in the Imports 'System.Linq' doesn't contain any public member or cannot be found.

Per cambiare la versione quadro mirato andare alle proprietà del progetto - > Compila -> Opzioni di compilazione avanzate ... imposta il framework di destinazione su ".NET Framework 3.5" e ricompila.

Nel caso in cui l'utilizzo di .NET 3.5 non sia possibile, è possibile utilizzare LINQBridge per utilizzare LINQ su oggetti mentre si utilizza il framework .NET 2.0.

+0

@Ahmad Mago: Grazie per il consiglio. Tutte e tre le importazioni mi danno questo errore: Namespace o tipo specificato nel System.Linq 'Imports non contiene alcun membro pubblico o non può essere trovato. Non vedo System.Data.DataSetExtensions come disponibile per fare riferimento, anche se ho il file .DLL sul mio sistema in "C: \ Programmi (x86) \ Reference Assemblies \ Microsoft \ Framework \ v3.5" – JosephStyons

+0

@ Joseph sei sicuro che stai costruendo contro .NET 3.5? Vai a Proprietà del tuo progetto -> Compila -> Opzioni di compilazione avanzate ... il Framework di destinazione è impostato su ".NET Framework 3.5"? –

+1

@Joseph Sono stato in grado di ottenere un messaggio identico selezionando .NET 2.0 con "Imports System.Linq" incluso. Targeting .NET 3.5 ha funzionato bene per me. A questo punto sono abbastanza sicuro che "System.Data.DataSetExtensions' non è correlato a questo problema. –

Problemi correlati