Básicamente, esa lista es enorme ... es todo lo que fuera de la relativamente small set of things that are handled. Desafortunadamente, el Law Of Leaky Abstractions entra en acción, y cada proveedor tiene diferentes respuestas ...
LINQ-to-Objects hará cualquier cosa (casi), ya que es delegados; LINQ-to-SQL y Entity Framework tienen diferentes conjuntos de soporte.
En general, he tenido bastante éxito usando las propiedades DateTime
, etc., pero en realidad, tendrá que asegurarse de que las expresiones de consulta estén cubiertas por pruebas unitarias, de modo que si alguna vez cambia proveedores (o el proveedor se actualiza) usted sabe que todo sigue funcionando.
Supongo que una vista es pensar en términos de TSQL; no hay BOTTOM n
, pero hay un TOP 1
(re el OrderByDescending
); En términos de string.IsNullOrEmpty
, puede ser bastante literal: foo.Bar == null || foo.Bar == ""
; y con DateTime.Date
probablemente puedas hacer bastante con DATEPART
/los diversos componentes.
Otra opción con LINQ to SQL es encapsular la lógica de una UDF - por lo que podría escribir una UDF que toma un datetime
y devuelve un datetime
, y exponer que a través de la dbml en la técnica de contexto. A continuación, puede utilizar eso en sus consultas:
where ctx.Date(foo.SomeDate) == DateTime.Today
Este enfoque, sin embargo, no significa necesariamente que un buen uso de índices.
Actualización:
- Las traducciones método admitido etc son here.
- Las operaciones de consulta admitidas, etc. son here.
Para los detalles morbosos completos, se puede ver en System.Data.Linq.SqlClient.PostBindDotNetConverter+Visitor
en el reflector - en particular, los métodos Translate...
; algunas funciones string
se manejan por separado. Así que no es una gran selección de , pero este es un detalle de implementación.
El problema con esta lista es que es un poco como demostrar que es negativo. La lista de cosas que no puedes hacer es infinita, la lista de cosas que * puedes * hacer es mucho más corta. –
Dado que esto se aproxima a "debido" ... ¿hay algo excepcional? ¿Qué más información necesitarías? –
No me importa admitir que me siento un poco engañado solo obteniendo mitad de recompensa por esto ... ¿qué más querías? –