Hay una herramienta llamada Linqer, pero tenga cuidado: la transliteración de SQL para LINQ le puede dar la worst of both worlds.
Por ejemplo, supongamos que desea todas las compras de $ 1000 o más pagadas en efectivo o por clientes que viven en Washington. Aquí está la consulta en SQL:
SELECT p.*
FROM Purchase p
LEFT OUTER JOIN
Customer c INNER JOIN Address a ON c.AddressID = a.ID
ON p.CustomerID = c.ID
WHERE
(a.State = 'WA' || p.CustomerID IS NULL)
AND p.ID in
(
SELECT PurchaseID FROM PurchaseItem
GROUP BY PurchaseID HAVING SUM (SaleAmount) > 1000
)
¿Cómo se traduciría esto a LINQ? La forma incorrecta es transcribir la consulta en LINQ, tratando de reproducir las uniones externas e internas, subconsulta y cláusula de grupo. La forma correcta es mapear su búsqueda original (en Inglés) directamente en LINQ, el aprovechamiento de flujo lineal de LINQ de propiedades de datos y asociación:
Quiero todas las compras ...
from p in db.Purchases
.. .de $ 1000 o mayor ...
where p.PurchaseItems.Sum (pi => pi.SaleAmount) > 1000
... pagado en efectivo ...
where p.Customer == null
... o por clientes que viven en Washington
|| p.Customer.Address.State == "WA"
Aquí está la pregunta final:
from p in db.Purchases
where p.PurchaseItems.Sum (pi => pi.SaleAmount) > 1000
where p.Customer == null || p.Customer.Address.State == "WA"
select p
Más información here.
Hay una herramienta: vea mi respuesta a continuación –
También vea esta pregunta: http://stackoverflow.com/questions/296972/sql-to-linq-tool –