Tengo una Consulta en SQL Server :

SELECT * FROM MyTable t
WHERE ISNULL(t.Status,'') = ''

Cómo puedo hacerlo en el Marco de la Entidad?

EDITAR:
Oh, lo Siento mi código era como

WHERE ISNULL(t.Status,'') = ''
  • Sólo se necesita WHERE t.Status = 'CO'. El ISNULL no afecta a la semántica y la hace unsargable.
  • sí entiendo que sino me equivoco y presentado a la pregunta de DONDE ISNULL(t.Estado,») = ‘CO’, en Realidad era DONDE ISNULL(t.Estado,») = «
  • Que todavía unsargable. Usted sólo debe utilizar WHERE t.Status = '' OR t.Status IS NULL
  • No estoy trabajando con la Instrucción SQL. Yo sólo lo utiliza como un ejemplo aquí. Necesitaba Entity Framework declaración. Ya lo he conseguido. De Todos Modos Gracias.
  • Concedido esto es inútil en un WHERE cláusula, pero es poderosa mano en ORDER BY donde NULL debe ser tratada como a una mayor que la-nada. Desde que google la pregunta general de «EF SQL isnull()» (y probablemente variantes) le da a este como un resultado superior, voy a tirar en mi +1 para equilibrar la balanza.
InformationsquelleAutor Usman Khalid | 2013-12-19

2 Comentarios

  1. 16

    Intente algo como

    MyTable.Donde( t => (t.De estado ?? «») == «CO» )

    • Este DONDE t.Status = ‘CO’ debe estar bien. Por qué usted necesita para comprobar ?? (null) ?
    • Aunque no es necesario hacerlo, es lo que el OP solicitado. No creo que se genera ISNULL pero COALESCE(...) pero eso no importa.
    • Es para proteger en contra de NULL propagación. En este ejemplo, el OP podía salirse con la suya, pero me parece mejor la práctica.
    • Es definitivamente no es lo mejor práctica. Se puede convertir un eficiente buscan en un análisis completo de la tabla. Por desgracia, Código de análisis de la regla de SR0007 (o al menos lo hizo) lo recomiendo que es, quizás, ¿por qué el OP tiene.
    • No es la mejor para obtener resultados rápidos, eso es cierto. Pero, null propagación en los lugares más inesperados puede significar roto resultados. La verdadera solución es no usar valores Nulos en las columnas de búsqueda.
    • La verdadera solución es entender las tecnologías que se están utilizando. Tres valores de la lógica no es difícil de conseguir a los apretones con.
    • Null no es un valor, pero la ausencia de uno.
    • En idioma indonesio, fue llamado «Mantaffff»

  2. 6

    Aunque la pregunta está bien, la lógica no es el sonido.
    Porque si un valor es igual a CO, nunca puede ser igual a NULL o ''.
    En este caso, usted puede fácilmente simplemente llame así:

    SQL:

    SELECT * FROM MyTable t
    WHERE t.Status = 'CO'

    Linq:

    var items = (from t in db.MyTable
                 where t.Status == "CO"
                 select t);

    Sin embargo, si usted necesita para tener un valor por defecto cuando NULL y compara con el valor que tendría más sentido (ver ejemplo):

    SQL:

    SELECT * FROM MyTable t
    WHERE ISNULL(t.Status, 'CO') = 'CO'

    Linq:

    var items = (from t in db.MyTable
                 where (t.Status ?? "CO") == "CO"
                 select t);

    Esto le puede dar todos los elementos donde t.El estado es NULL o igual a CO.
    Este es, por supuesto, sólo un ejemplo.

    Nota: El sql generado probablemente sería un poco diferente, pero el resultado es el mismo.
    Esto probablemente se vería algo como esto:

    SELECT * FROM MyTable t
    WHERE COALESCE(t.Status, 'CO') = 'CO'

Dejar respuesta

Please enter your comment!
Please enter your name here