Mam klasy w moim kodu, który jest już pochodzących od IEnumerable. Zastanawiam się, czy istnieje sposób, że mogę użyć metody "Zawiera" w swoich instancjach, aby wyszukać coś na tej liście?Czy mamy metodę "Zawiera" w IEnumerable
7
A
Odpowiedz
15
Czy naprawdę wdrożyć nierodzajową IEnumerable
lub rodzajowego IEnumerable<T>
? Jeśli możesz wdrożyć wersję ogólną, twoje życie stanie się znacznie prostsze - wtedy możesz użyć LINQ to Objects, która rzeczywiście ma metodę rozszerzenia Contains
.
W przeciwnym razie można potencjalnie przekonwertować z nie generycznego na ogólny za pomocą Cast
lub, np.
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
Byłoby ładniej, jeśli tylko wdrożył rodzajowy interfejs na początek choć :)
14
Nie, takiej metody nie ma w interfejsie IEnumerable<T>
. Jest taki, że możesz go użyć.
using System.Linq;
, a następnie:
IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
0
public static bool Contains<T>(this IEnumerable source, T value)
{
foreach (var i in source)
{
if (Equals(i, value))
return true;
}
return false;
}
Jeśli chcesz, możesz dodać niestandardową porównywarka jako parametr metody wydłużania ti Zawiera
Powiązane problemy
- 1. C# Zawiera metodę
- 2. Czy mamy wzorce projektowe w C++, jakie mamy w java?
- 3. Czy mamy autochomp w Perlu?
- 4. Czy mamy zamknięcia w C++?
- 5. Czy mamy transakcje w MS-Access?
- 6. Czy mamy zmodyfikowane wydarzenie canvas w Fabric.js?
- 7. Dlaczego IEnumerable (T) nie są akceptowane jako odbiornik metodę rozszerzenia
- 8. NUnit: Jaki jest najbardziej zwięzły sposób potwierdzenia, czy IEnumerable zawiera obiekt określonego typu?
- 9. Czy można zmienić metodę wyszukiwania w LINQ?
- 10. Zdefiniuj metodę rozszerzenia dla IEnumerable <T>, która zwraca IEnumerable <T>?
- 11. Czy LINQ działa z IEnumerable?
- 12. Czy mamy danych typu array w SQL Server 2008
- 13. W jaki sposób środowisko wykonawcze wie, która klasa zawiera główną metodę w aplikacji C#?
- 14. Jak wiemy, czy macierz FileInfo [] zawiera plik
- 15. Czy C# ma metodę ContainsAny() dla słownika?
- 16. Moduł podmiotu 6 kpina zawiera metodę na dbset
- 17. Jak utworzyć singleton IEnumerable?
- 18. Sprawdź, czy ciąg zawiera inny ciąg
- 19. Czy STL zawiera hashtable?
- 20. Jeśli mamy nieskończoną pamięć, czy nadal potrzebujemy wywoływania?
- 21. Mamy wiele plików migracji bazy danych - czy powinniśmy je zachować?
- 22. Dlaczego mamy niezmienną pustą mapę?
- 23. Czy mamy nieskompresowaną bibliotekę javascript dla Google Maps API V3
- 24. Czy mamy teraz przenieść naszą aplikację WPF do aplikacji UWP?
- 25. Czy wzór fabryczny zawiera logikę walidacji
- 26. Buforowanie IEnumerable
- 27. IEnumerable paradox
- 28. czy można zastąpić metodę w czasie wykonywania?
- 29. IEnumerable OrderBy
- 30. Sprawdź, czy ciąg zawiera słowo w tablicy