none
Cómo seria una consulta SQL en LINQ RRS feed

  • Pregunta

  • Hola;

    Tengo esta tabla

    Id_Estado_Solicitud       Id_MS_Estado_Solicitud              Id_Solicitud

    13                    ''                             1                       ''                   1000

    14                   ''                              2                        ''                   1000

    15                   ''                              1                        ''                    1001

    16                   ''                              2                         ''                    1001

    17                   ''                              1                         ''                    1002

    18                  ''                               2                         ''                    1002

    19                  ''                               1                          ''                  1003

    20                  ''                               1                          ''                  1004

    21                   ''                              1                          ''                 1005

    22                   ''                              2                           ''                1006

    23                    ''                             2                           ''              1007

    24                    ''                            2                             ''              1008

    25                                                 2                             ''               1009

    Y esta SELECT

    select Id_Solicitud, Id_MS_Estado_Solicitud

    from SOL_ESTADO_SOLICITUD t1
    where Id_MS_Estado_Solicitud = 2
    and not exists (select Id_Solicitud from SOL_ESTADO_SOLICITUD t2 where Id_MS_Estado_Solicitud = 1
    and t1.Id_Solicitud = t2.Id_Solicitud)

    Con  la  se recupera los registros que tienen id_ms_estado_solicitud=2 pero no tienen Id_MS_Estado_Solicitud=1, es decir los id_solicitudes:

    1006

    1007

    1008

    1009

    Los datos de esta tabla  los tengo en un list (of la tabla, llamado listaSOL_ESTADO_SOLICITUD) y quiero hacer lo mismo que la SELECT pero con LINQ, algo así:


            Dim solEnDatos = (From solicitud In listaSOL_ESTADO_SOLICITUD 
                            Where ! (select solicitud.Id_MS_Estado_Solicitud = 1)
                            And solicitud.Id_MS_Estado_Solicitud = 2

     

    Pero esto, y algunas variaciones que he hecho me da error

    ¿Alguna sugerencia?

    Gracias, un saludo.


    sábado, 19 de enero de 2013 11:48

Respuestas

  • Muchas gracias Leandro;

    Si meto tu el LINQ que me has dicho en el código, el Select Group.Id_Solicitud , el id_solicitud no me lo reconoce, solo tiene sum, toarray, etc.

    Si hago 

        Dim solEnDatos = From solicitud In listaSOL_ESTADO_SOLICITUD _
                  Group solicitud By solicitud.Id_Solicitud, solicitud.Id_MS_Estado_Solicitud Into Group _
                              Where Group.Count < 2 _
                              And Id_MS_Estado_Solicitud = 2 _
                              Select Group

    me recupera todos los registros que tiene id_ms_estado_solicitud=2, y lo que se tiene que recuperar son los registros que tienen id_ms_estado_solicitud=2, pero no tienen id_ms_estado_solicitud=1

    Un saludo.

    • Marcado como respuesta arrocal miércoles, 7 de agosto de 2013 15:37
    domingo, 20 de enero de 2013 12:51
  • y usar el

    Dim solEnDatos = From solicitud In listaSOL_ESTADO_SOLICITUD _
                  Group solicitud By solicitud.Id_Solicitud, solicitud.Id_MS_Estado_Solicitud Into Group _
                              Where Group.Count < 2
                              Select Group.Key.Id_Solicitud, Group.Key.Id_MS_Estado_Solicitud

    no necesitas usar el Id_MS_Estado_Solicitud = 2

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta arrocal miércoles, 7 de agosto de 2013 15:37
    domingo, 20 de enero de 2013 17:20

Todas las respuestas

  • y si usas el group by ? o sea si hay mas de dos registros para el mismo Id_Solicitud entonces lo descartas

    Dim solEnDatos = From solicitud In listaSOL_ESTADO_SOLICITUD _
                            Group solicitud By solicitud.Id_Solicitud Into Group _
                             Where  Group.Count < 2 _
                            Select Group.Id_Solicitud 



    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    sábado, 19 de enero de 2013 19:40
  • Muchas gracias Leandro;

    Si meto tu el LINQ que me has dicho en el código, el Select Group.Id_Solicitud , el id_solicitud no me lo reconoce, solo tiene sum, toarray, etc.

    Si hago 

        Dim solEnDatos = From solicitud In listaSOL_ESTADO_SOLICITUD _
                  Group solicitud By solicitud.Id_Solicitud, solicitud.Id_MS_Estado_Solicitud Into Group _
                              Where Group.Count < 2 _
                              And Id_MS_Estado_Solicitud = 2 _
                              Select Group

    me recupera todos los registros que tiene id_ms_estado_solicitud=2, y lo que se tiene que recuperar son los registros que tienen id_ms_estado_solicitud=2, pero no tienen id_ms_estado_solicitud=1

    Un saludo.

    • Marcado como respuesta arrocal miércoles, 7 de agosto de 2013 15:37
    domingo, 20 de enero de 2013 12:51
  • y usar el

    Dim solEnDatos = From solicitud In listaSOL_ESTADO_SOLICITUD _
                  Group solicitud By solicitud.Id_Solicitud, solicitud.Id_MS_Estado_Solicitud Into Group _
                              Where Group.Count < 2
                              Select Group.Key.Id_Solicitud, Group.Key.Id_MS_Estado_Solicitud

    no necesitas usar el Id_MS_Estado_Solicitud = 2

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta arrocal miércoles, 7 de agosto de 2013 15:37
    domingo, 20 de enero de 2013 17:20