2011-11-03 6 views

risposta

16

Diciamo che voglio scrivere un C# espressione e C# statment dove ho ho una tabella nel server SQL denominata Prodotti e voglio tirare tutte le righe dove il prezzo è maggiore di 50. Come lo scriveresti?

LINQPad crea automaticamente DataContext digitato, quindi non è necessario creare un'istanza. In modalità di espressione C#, digita il seguente:

Products.Where(p => p.Price > 50) 

e premere F5. In alternativa, si potrebbe preferire di usare un'espressione di query:

from p in Products 
where p.Price > 50 
select p 

In C# modalità affermazioni, è necessario chiamare il metodo Dump() per dirgli di scrivere i risultati. Avrete anche bisogno di interrompere l'espressione con un punto e virgola:

Products.Where(p => p.Price > 50).Dump(); 

Non ci sono altri esempi nella sezione campioni di LINQPad - guardare l'induzione di 5 minuti.

+0

Grazie a @Joe. Questo è esattamente quello che stavo cercando. BTW exprssion ha funzionato bene ma quando eseguo "da p in Prodotti in cui p.Prezzo> 50 selezionare p" statment I get error "; expected". Aggiungo ; alla fine, ma questo non aiuta neanche. Qualche idea? –

+0

perché hai selezionato C# Statement (s). Le dichiarazioni devono finire con; ma le espressioni non possono finire con; Salto tutta questa confusione e vado con il programma C# :) – Joe

+0

@Joe puoi aiutarmi con questa domanda :) http://stackoverflow.com/questions/19291255/linqpad-doesnt-render-group-collection – AuthorProxy

3
var db = new MyDatabaseContext(); // Your database context. 
var result = db.Products.Where(q=>q.Price > 50); 

... dove db rappresenta il contesto ORM. Price rappresenta la mappatura al campo Price nel database. result rappresenta il set di risultati: le righe/le entità del database.

+0

Fornisce "Impossibile trovare il tipo o il nome dello spazio dei nomi 'MyDatabaseContext'". Scusa per la mia ignoranza, ma sono totalmente nuovo a Linq/ORM. Devo installare qualcosa in Linqpad? La mia impressione è che io possa usare solo linq in sql proprio come io uso il mio studio di gestione SQL e interrogare direttamente le tabelle del database –

+0

È necessario creare un mapping del database. 'MyDatabaseContext' è solo un nome fittizio per quello che hai chiamato il tuo ORM. –

+0

Sai dove posso creare esattamente la mappatura in LinqPad? –

0

Check out: http://msdn.microsoft.com/en-us/library/bb397933(v=vs.90).aspx che vi fornirà un'introduzione a Linq e l'utilizzo di espressioni lambda.

Dai un'occhiata al http://msdn.microsoft.com/en-us/library/bb386927.aspx che vi darà le basi, ma per rispondere alla tua domanda specifica:

var products = db.Products.Where(prod => prod.Price > 50); 
foreach(var product in products) 
{ 
    //do something 
} 
+0

Quando lo eseguo come programma C#, i errore seguente "'LINQPad.User.Products' non contiene una definizione per 'Prezzo' e nessun metodo di estensione 'Prezzo' che accetta un primo argomento di tipo 'LINQPad.User.Products' potrebbe essere trovato". Che cosa sto facendo di sbagliato? –

+0

È necessario creare una mappatura del database. Hai dato un'occhiata al link del tutorial SQL di Linq 2 che ho postato? Ciò copre le basi. Avete un database configurato con una tabella prodotti? – Maess

+0

Sì, l'ho visto, ma in LinqPad l'unica opzione che sembra trovare è Aggiungi connessione. Una volta aggiunta la connessione alla mia istanza db di SQL Server, posso vedere tutti i database/tabelle ecc. Sul lato sinistro. Non so o vedo nessun optons come e dove creare la mappatura del database –

5

Volevo solo aggiungere - pluralizes pad LINQ - Non sapevo questo e mi faceva impazzire per un buon quarto d'ora

stavo cercando di selezionare da una tabella chiamata DentalApplication

DentalApplication.Where(a=> a.PackageID > 0) 

Gave me questo errore

'LINQPad.User.DentalApplication' does not contain a definition for 'Where' 

cambiato in

DentalApplications.Where(a=> a.PackageID > 0) 

e ha funzionato

+0

Per impostazione predefinita, Linqpad sta pluralizzando le proprietà di associazione figlio. Si prega di fare riferimento a http://stackoverflow.com/questions/7833133/linqpad-adds-an-s-to-the-end-of-every-table – maoyang