Tengo 2 tablas que se relacionan entre sí¿Cómo hago esto en Entity Framework (multiple where's o Join)?
La Tabla A tiene una relación de 1 a muchos con la tabla B, por lo que crea una propiedad de navegación en cada una.
Ahora necesito verificar un valor de la Tabla A (userName) y necesito verificar un valor de la tabla B (ClubId).
Así que en mi mente sería algo así como
Join the tables together
Where A.userName == "bob" &&
where B.clubId == "Car"
// return the count.
pero ahora sé con Entidad cosas que debería hacer que se une menos común, así que estoy preguntando si puedo hacerlo con una unirse a continuación.
yo probamos este
int count = Entity.TableA.where(a => a.userName == "bob" && a.TableB.where(i => i.ClubId == "Car")).Count();
por lo que este no funciona, ya que no devolverá el tipo correcto (el segundo dónde). Así es como pensé en la forma en que esperaría que se hiciera funcionaría.
Entonces, ¿cómo debería verse?
P.S
Prefiero he hecho un ejemplo de las consultas LINQ método como lo hice anteriormente.
Ah. Wow. No estoy seguro de qué es lo que más me gusta de su caso. Ese selectMany me despluma. Entonces, ¿qué sucede si necesito otro filtro? ¿Añadiría otro selectMany? Bueno, la primera sintaxis de método funciona. No sé si baja internamente y hace lo segundo. Todas las consultas tomarían el mismo tiempo de ejecución. Lo que está en el segundo, lo hace SelectMany uno. como lo que es a => a.TableB, (a, b) =>) hacer? – chobo2
He actualizado la publicación con una corrección en la traducción de la consulta. El primer SelectMany esencialmente "aplana" su colección anidada, devolviendo una secuencia de todas las B de todas las A. El segundo SelectMany acepta dos delegados, un "collectionSelector" para recuperar la colección de B de una A y un "resultSelector" para especificar el valor de retorno dado un A y un B.LINQ simplemente selecciona ambos objetos de entrada, para usar en el resto de su consulta. – dahlbyk