2011-11-03 19 views

Respuesta

16

Digamos que quiero escribir un C# Expresión y un C# DECLARACIÓN donde tengo una tabla en SQL server llamada Products y quiero extraer todas las filas donde el precio es mayor que 50. ¿Cómo lo escribiría?

LINQPad construye el DataContext tipeado para usted automáticamente, por lo que no necesita crear una instancia de nada. En el modo de expresión C#, simplemente escriba lo siguiente:

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

y presione F5. Alternativamente, es posible que prefiera utilizar una expresión de consulta:

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

En el modo C# declaraciones, tendrá que llamar al método dump() para indicarle que debe escribir los resultados. Usted también necesitará para terminar la expresión con un punto y coma:

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

Hay más ejemplos en la sección de muestras LINQPad - vistazo a la inducción de 5 minutos.

+0

Gracias @Joe. Eso es exactamente lo que estaba buscando. Por cierto, la expresión expulsada funcionaba bien, pero cuando ejecuto "desde p en Productos donde p.Precio> 50 seleccione p", la declaración me da error ";" esperado ". Añado ; al final, pero eso tampoco ayuda. ¿Algunas ideas? –

+0

eso se debe a que ha seleccionado las Declaraciones de C#. Las declaraciones deben terminar con; pero las expresiones no pueden terminar; Me salte toda esta confusión y sigo el programa C# :) – Joe

+0

@Joe me pueden ayudar con esta pregunta :) 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); 

... donde db representa su contexto ORM. Price representa su asignación al campo Price en la base de datos. result representa el conjunto de resultados: sus filas/entidades de base de datos.

+0

Proporciona "No se encontró el tipo o el nombre del espacio de nombres 'MyDatabaseContext'". Lo siento por mi ignorancia, pero soy totalmente nuevo en Linq/ORM. ¿Debo configurar algo en Linqpad? Mi impresión de que puedo usar linq en SQL al igual que uso mi SQL Management Studio y consulto directamente las tablas de la base de datos. –

+0

. Necesita crear una asignación de base de datos. 'MyDatabaseContext' solo es un nombre ficticio para lo que sea que haya llamado su ORM. –

+0

¿Sabes exactamente dónde puedo crear mapas en LinqPad? –

0

Revisa: http://msdn.microsoft.com/en-us/library/bb397933(v=vs.90).aspx que te dará una introducción a Linq y el uso de expresiones lambda.

A continuación, echar un vistazo a http://msdn.microsoft.com/en-us/library/bb386927.aspx que le dará los fundamentos, pero para responder a su pregunta específica:

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

Cuando la ejecuto como un programa C#, obtener el siguiente error "'LINQPad.User.Products' no contiene una definición para 'Precio' y no se pudo encontrar ningún método de extensión 'Precio' que acepte un primer argumento de tipo 'LINQPad.User.Products'". ¿Qué estoy haciendo mal? –

+0

Necesita crear una asignación de base de datos. ¿Has echado un vistazo al enlace del tutorial de SQL de Linq 2 que publiqué? Eso cubre lo básico. ¿Tiene una base de datos configurada con una tabla de productos? – Maess

+0

Sí, lo he visto pero en LinqPad la única opción que parece encontrar es Agregar conexión. Una vez que agregué la conexión a mi instancia SQL db, puedo ver todas las bases de datos/tablas, etc. en el lado izquierdo. Simplemente no sé ni veo ningún opton sobre cómo y dónde crear la asignación de la base de datos. –

5

sólo quería añadir - pluraliza almohadilla LINQ - Yo no sabía esto y me volvía loco por un cuarto de hora

yo estaba tratando de seleccionar de una tabla llamada DentalApplication

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

dio me este error

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

lo cambió a

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

y funcionó

+0

Por defecto, las propiedades de asociación de elementos de pluralización de Linqpad. Consulte http://stackoverflow.com/questions/7833133/linqpad-adds-an-s-to-the-end-of-every-table – maoyang

Cuestiones relacionadas