Gibt es ein Äquivalent einer SQL IN-Anweisung in LINQ zu Objekten?In Anweisung für LINQ zu Objekten
5
A
Antwort
16
Ja - 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);
}
(In LINQ to SQL das endet als "IN" Abfrage auf.)
Beachten Sie, dass in LINQ die oben ist nicht wirklich sehr effizient Objekte. Sie würden besser dran mit einem Join: (. Diese noch mit Punktnotation natürlich getan werden könnte, aber es endet als etwas unordentlicher up)
var matches = from person in people
join name in desiredNames on person.FirstName equals name
select person;
0
I für Innere in dieser gehen Sie Mitglied Kontext. Wenn ich contains
verwendet hätte, würde es 6 mal wiederholen, obwohl die Tatsache, dass es nur zwei Übereinstimmungen gibt. Ich möchte hier nur betonen, dass ich für Joins anstelle von IN Prädikat gehen werde.
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();
Verwandte Themen
- 1. Update in LINQ zu Objekten
- 2. HQL vs Linq zu Objekten
- 3. LINQ zu Objekten der Anzeigespalte
- 4. Wie Zeitüberschreitung für NHibernate LINQ-Anweisung festlegen
- 5. wie diese Anweisung in linq zu SQL
- 6. Linq-Anweisung in Datatable
- 7. Linq-Anweisung: Auftrag von
- 8. Linq zu Objekten verschachtelte Gruppe von
- 9. Raumkomplexität einer einfachen Linq (zu Objekten) Abfrage
- 10. Wie schreibe ich LINQ-Anweisung für XmlAttributeCollection?
- 11. bedingte IF-Anweisung in LINQ
- 12. SQL-Anweisung in Linq konvertieren
- 13. LINQ in sql-Anweisung übersetzen
- 14. Fehler in LINQ-Anweisung, wenn
- 15. Linq fusionieren Anweisung benötigt
- 16. Verwirrende LINQ-Anweisung
- 17. Bedingte LINQ wo Anweisung?
- 18. Objekt mit Liste von Objekten, in denen eine Liste von Objekten Linq zu Entities
- 19. Mit if-Anweisung in Linq Abfrage
- 20. Linq-Version von SQL "IN" Anweisung
- 21. drei Ebenen SELECT-Anweisung in LINQ?
- 22. Suche nach Wert in einer Liste von Objekten mit Linq
- 23. Verwendung von Lambda in LINQ Select-Anweisung
- 24. Fehler innerhalb der WHERE-Anweisung in LINQ
- 25. Linq-zu-Sql, Verwendung von Entitätsklassen und Parent/Child-Objekten
- 26. Linq zu Objekten mit 'nicht existiert' und 'Gruppe von'?
- 27. Linq where-Klausel nicht in select-Anweisung
- 28. IF-Anweisung in einem LINQ SELECT
- 29. LINQ Where-Anweisung in der Sammlung
- 30. Wenn Anweisung in LINQ to SQL
Vielen Dank! Dein Ruf geht dir voraus ;-) –
Warum wird der innere Join hier nicht bevorzugt? Sie wissen, wenn die Leute 10 Datensätze enthalten und selledNames 2 enthält, wird es 20 Mal im Hintergrund iterieren, unabhängig davon, ob es eine Übereinstimmung gibt oder nicht. – Pankaj
@PankajGarg: Bitte nicht so nervös - ich werde nicht immer sofort antworten können. Hast du den unteren Teil meines Beitrags gelesen, der explizit gesagt hat, dass in LINQ to Objects ein Join besser wäre? –