Cercando di imparare Linq utilizzando LinqPad e diventando frustrato su come avviarlo. Diciamo che voglio scrivere un'espressione C# e una statistica C# in cui ho una tabella nel server SQL denominata Prodotti e voglio tirare tutte le righe dove il prezzo è maggiore di 50. Come lo scriveresti?Passi per un principiante per eseguire query di base da linq a sql utilizzando Linqpad
risposta
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.
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.
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 –
È necessario creare un mapping del database. 'MyDatabaseContext' è solo un nome fittizio per quello che hai chiamato il tuo ORM. –
Sai dove posso creare esattamente la mappatura in LinqPad? –
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
}
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? –
È 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
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 –
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
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
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? –
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
@Joe puoi aiutarmi con questa domanda :) http://stackoverflow.com/questions/19291255/linqpad-doesnt-render-group-collection – AuthorProxy