Ho una classe nel mio codice che è già derivata da IEnumerable. Mi chiedevo se c'è un modo in cui posso usare un metodo "Contiene" sulle sue instnaces per cercare qualcosa in quella lista?Abbiamo un metodo "Contiene" in IEnumerable
7
A
risposta
15
Ti davvero attuare il non generico IEnumerable
, o il generico IEnumerable<T>
? Se è possibile implementare quella generica, la tua vita diventerà molto più semplice - come allora puoi utilizzare LINQ to Objects, che ha effettivamente un metodo di estensione Contains
.
In caso contrario, è possibile convertire dal non generico al generico utilizzando Cast
o OfType
, ad es.
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
Sarebbe bello se appena implementato l'interfaccia generica per cominciare però :)
14
No, non esiste un tale metodo nell'interfaccia IEnumerable<T>
. C'è uno extension method
che potresti usare.
using System.Linq;
e poi:
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;
}
Se si desidera, è possibile aggiungere di confronto personalizzato come metodo di parametro di estensione ti Contiene
Problemi correlati
- 1. Linq metodo contiene per un oggetto
- 2. Verificare se un IEnumerable contiene tutti gli elementi di un altro IEnumerable
- 3. C# Contiene il metodo
- 4. Come rendere IEnumerable <string>. Contiene maiuscole e minuscole?
- 5. Perché abbiamo contiene (oggetto o) invece di contenere (E e)?
- 6. di ArrayList Contiene metodo
- 7. Passando un argomento IEnumerable vuoto ad un metodo
- 8. Abbiamo bisogno di un metodo .build() nel Pattern Builder?
- 9. Perché ICollection non contiene un metodo Aggiungi?
- 10. HashSet contiene il metodo()
- 11. Foreach con Metodo di estensione sul IEnumerable
- 12. Collection/Array contiene il metodo
- 13. La stringa contiene il metodo in jsf
- 14. Iniezione di un oggetto IEnumerable in un costruttore con un metodo factory Ninject
- 15. Leggendo un IEnumerable più volte
- 16. inizializzazione IEnumerable <string> In C#
- 17. NUnit: qual è il modo più conciso per affermare se un oggetto IEnumerable contiene un oggetto di un certo tipo?
- 18. Come concatenare due IEnumerable <T> in un nuovo IEnumerable <T>?
- 19. Girando un IEnumerable di IEnumerables in un dizionario
- 20. Come andare a un determinato elemento in IEnumerable
- 21. Infinite IEnumerable in un ciclo foreach
- 22. La raccolta null-safe contiene il metodo
- 23. "Classe" non contiene una definizione per "Metodo"
- 24. Esiste un metodo Linq per aggiungere un singolo elemento a un oggetto IEnumerable <T>?
- 25. IEnumerable OrderBy
- 26. Abbiamo transazioni in MS-Access?
- 27. Perché abbiamo Function.call in javascript?
- 28. Come gestire un IEnumerable "infinito"?
- 29. Convertire IEnumerable in elenco
- 30. mvc3 form per un IEnumerable