Y el operador no puede trabajar con bool y string

Tengo una declaración LINQ2SQL donde estoy usando dos criterios:

var query1 = from r in dt.Test
                                where r.ID == 92 
                                && r.Status = '"I"
                                select r.ID && r.Status = "I"

Pero me está dando un error de que el operador AND (&&) no puede trabajar con string y bool. ¿Cuál es el cambio para esto?

preguntado el 16 de mayo de 11 a las 20:05

¿Qué resultado esperas? -

No entiendo la pregunta "¿Cuál es el cambio para esto?". ¿Por "cambio de rumbo" te refieres a "explicación"? -

Es el extra ' en frente de "I" ¿un error? -

= (asignación)! = == (igualdad) -

¿Está mezclando igualdad y asignación con su operador igual? -

5 Respuestas

Intente reemplazar su = con signos ==

var query1 = from r in dt.Test
                            where r.ID == 92 
                            && r.Status == "I"
                            select r.ID && r.Status == "I"

Recuerda que = en C # es el operador de asignación, y == es el operador de igualdad. Como alguien que cambia regularmente entre C # y VB.NET, ¡a menudo me despego aquí!

contestado el 17 de mayo de 11 a las 00:05

Me llamo pero "I" = r. El estado habría detectado esto como un error de compilación - n8wrl

@ kim9971 - ¡Feliz de ayudar! No olvide elegir una respuesta a su pregunta haciendo clic en el "tick" a la izquierda :) - Karl Nicoll

Tienes un solo signo igual r.Status = '"I", debiera ser r.Status == '"I"

contestado el 17 de mayo de 11 a las 00:05

Sí, fue un error tipográfico por mi parte. - RG-3

Quiere decir == en lugar de =; la expresión de asignación (a diferencia del operador de igualdad) confunde las cosas; en lugar de devolver un bool, el resultado de r.Status = "I" es una cuerda ... "I"

var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select r.ID;

(no estoy muy seguro de qué hacer con la última parte de su select, así que lo omití)

contestado el 17 de mayo de 11 a las 00:05

  1. = se utiliza para asignación y == se utiliza para la igualdad.
  2. No estoy seguro del resultado que esperas, pero select r.ID && r.Status == "I" (incluso con 2 signos iguales) no es válido en ningún caso.

Dependiendo de lo que desee seleccionar, si el resultado es la cantidad de filas que califican para su búsqueda, considere usar Count(). Si desea seleccionar estos dos valores, utilice una clase POCO o una tipo anónimo:

var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select new { ID = r.ID, Status = r.Status };

contestado el 23 de mayo de 17 a las 12:05

var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select r.ID && r.Status == "I";

Respondido 11 ago 12, 15:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.