Czy istnieje odpowiednik instrukcji SQL IN w LINQ do obiektów?Instrukcja dla LINQ do obiektów
5
A
Odpowiedz
16
Tak - 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);
}
(w LINQ to SQL to kończy się jako "w" zapytaniu.)
pamiętać, że w LINQ to Objects powyższe nie jest naprawdę bardzo skuteczny. Byłbyś lepiej z złączenia: (. To może wciąż być wykonane z notacji dot oczywiście, ale to kończy się nieco Messier)
var matches = from person in people
join name in desiredNames on person.FirstName equals name
select person;
0
pójdę do Inner Join w ten kontekst. Gdybym użył contains
, iterowałbym 6 razy, pomimo faktu, że są tylko dwa mecze. Chcę tylko podkreślić tutaj, że wybiorę Joins zamiast 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();
Powiązane problemy
- 1. instrukcja switch w LINQ
- 2. Instrukcja Linq dla nieskończonej sekwencji kolejnych połówek
- 3. Instrukcja przełącznika nie działa dla obiektów numerycznych
- 4. Linq do obiektów Konstruktor predykatów
- 5. Nieporęczna instrukcja LINQ z wieloma kryteriami wyszukiwania
- 6. Używanie LINQ do scalania listy obiektów
- 7. Wyraźne nie działa z LINQ do obiektów
- 8. Kiedy jest LINQ (do obiektów) nadużywany?
- 9. Metoda Linq do tworzenia sekwencji oddzielnych obiektów?
- 10. Złożoność przestrzeni prostej zapytania linq (do obiektów)
- 11. Używanie LINQ do grupy listę obiektów
- 12. Chętne ładowanie polimorficznych obiektów dla obiektów podrzędnych
- 13. LINQ do SQL dla Oracle.ODP
- 14. Linq zapytanie o listę obiektów zawierających listę obiektów
- 15. Skrócona instrukcja dla początkujących XSLT
- 16. Inicjowanie mocno wpisanych obiektów w LINQ do encji
- 17. użyciu LINQ do grupy listę obiektów do nowej listy zgrupowane listy obiektów
- 18. Używanie Linq do uruchomienia metody na zbiorze obiektów?
- 19. Instrukcja instalacji MonoGame dla Mac
- 20. Jak używać LINQ do generowania nowego typu obiektów
- 21. C# LINQ do obiektów: Group By/Sum help
- 22. Zaznaczanie wszystkich obiektów podrzędnych w Linq
- 23. Dlaczego nie intellisense, gdy instrukcja LINQ nie ma klauzuli gdzie?
- 24. Instrukcja LINQ, która zwraca rownumber elementu o id == coś?
- 25. Jak napisać Upsert dla LINQ do SQL?
- 26. Dołączanie obiektów do istniejących obiektów
- 27. Subskrybuj do INotifyPropertyChanged dla obiektów zagnieżdżonych (potomnych)
- 28. LINQ wybrać do nowego obiektu
- 29. Czy instrukcja dla ciągów w python?
- 30. Maniakalna instrukcja MSMQ MessageQueue
Dziękujemy! Twoja reputacja Cię wyprzedza ;-) –
Dlaczego wewnętrzne połączenie nie jest tutaj preferowane? Wiesz, że jeśli ludzie zawierają 10 rekordów, a desiredNames zawiera 2, to będzie iterować 20 razy w tle, niezależnie od tego, czy istnieje dopasowanie, czy nie. – Pankaj
@PankajGarg: Proszę nie dręczyć w ten sposób - nie zawsze będę w stanie odpowiedzieć natychmiast. Czy przeczytałeś w dolnej części mojego posta, który wyraźnie powiedział, że w LINQ to Objects join byłby lepszy? –