¿Existe un equivalente de una instrucción SQL IN en LINQ para los objetos?En instrucción para LINQ a los objetos
5
A
Respuesta
16
Sí - Contains.
var desiredNames = new[] { "Jon", "Marc" };
var people = new[]
{
new { FirstName="Jon", Surname="Skeet" },
new { FirstName="Marc", Surname="Gravell" },
new { FirstName="Jeff", Surname="Atwood" }
};
var matches = people.Where(person => desiredNames.Contains(person.FirstName));
foreach (var person in matches)
{
Console.WriteLine(person);
}
(En LINQ a SQL esto termina como una consulta de "IN".)
Tenga en cuenta que en LINQ a Objetos lo anterior no es realmente muy eficiente. Usted sería mejor con una combinación: (. Esto todavía podría hacerse con la notación de punto, por supuesto, pero que termina siendo un poco más desordenado)
var matches = from person in people
join name in desiredNames on person.FirstName equals name
select person;
0
voy a ir a por combinación interna en este contexto. Si hubiera usado contains
, se repetiría 6 veces a pesar de que haya solo dos coincidencias. Solo quiero enfatizar aquí que iré por uniones en lugar de un predicado IN.
var desiredNames = new[] { "Pankaj" };
var people = new[]
{
new { FirstName="Pankaj", Surname="Garg" },
new { FirstName="Marc", Surname="Gravell" },
new { FirstName="Jeff", Surname="Atwood" }
};
var records = (from p in people join filtered in desiredNames on p.FirstName equals filtered select p.FirstName).ToList();
Cuestiones relacionadas
- 1. Linq a objetos Predicate Builder
- 2. linq a entidades vs linq a objetos - ¿son lo mismo?
- 3. Recuperar LINQ en instrucción sql (IQueryable) CON los parámetros
- 4. ¿Cuándo se usa demasiado LINQ (a los objetos)?
- 5. Linq a los objetos: seleccione el primer objeto
- 6. Comportamiento FirstOrDefault directamente en la instrucción LINQ
- 7. Selección de todos los objetos secundarios en LINQ
- 8. ¿Cuál es la sintaxis VB.NET equivalente para los tipos anónimos en una instrucción LINQ?
- 9. [Optimizar esto]: Lento LINQ para consultar objetos
- 10. Inicializando objetos fuertemente tipados en LINQ a Entidades
- 11. instrucción IF dentro de un LINQ SELECT
- 12. instrucción de Linq a SQL para múltiples valores agregados en una sola expresión
- 13. Caso cadena insensible comparar con LINQ a SQL y LINQ a objetos
- 14. LINQ a objetos cuando el objeto es nulo VS LINQ a SQL
- 15. Linq Seleccionar instrucción lenta al obtener COUNT
- 16. instrucción "If" - ¿Orden de validación de objetos?
- 17. Convertir una instrucción SQL en LINQ-To-SQL
- 18. LINQ - Agregar propiedad a los resultados
- 19. ¿Por qué no se optimiza Skip() en LINQ a los objetos?
- 20. C# Acceso a los objetos de gestión en ManagementObjectCollection
- 21. Puntero C++ a los objetos
- 22. Error dentro de la instrucción Where en LINQ
- 23. LINQ a objetos que ordenan por número arbitrario de parámetros
- 24. Cómo utilizar LINQ para generar nuevos tipos de objetos
- 25. extender linq a las entidades para reconocer los métodos personalizados
- 26. Linq a XML para KML?
- 27. LINQ a Objetos Únete dos colecciones para establecer valores en la primera colección
- 28. Uso de LINQ para fusionar una lista de objetos
- 29. LINQ a XML en VB.NET
- 30. consulta LINQ entre dos objetos de lista
¡Gracias! Tu reputación te precede ;-) –
¿Por qué la unión interna no se prefiere aquí? Usted sabe si la gente contiene 10 registros y deseaNombres contiene 2, se repetirá 20 veces en segundo plano, independientemente de que haya coincidencia o no. – Pankaj
@PankajGarg: Por favor, no moleste así: no siempre podré responder de inmediato. ¿Leíste la parte inferior de mi publicación que explícitamente decía que en LINQ to Objects un join sería mejor? –