valore stringa IEqualityComparer all'interno dell'oggetto
-
24-10-2019 - |
Domanda
I molto probabilmente sto facendo nel modo sbagliato, ma;
Ho una lista di oggetti in LINQ;
MyObj
string name
string somethingElse
List<MyObj> myObjects;
Ora sto cercando di vedere se qualsiasi oggetto in tale elenco ha un valore stringa;
Così ho;
if (Model.myObjects.Contains("thisobject", new MyObjComparer()))
{
}
l'operatore di confronto che ho;
public class MyObjComparer: IEqualityComparer<MyObj>
{
public bool Equals(string containsString, MyObj obj)
{
return obj.name == containsString;
}
}
Come posso utilizzare un operatore di confronto per verificare contro un valore stringa in un campo di oggetti?
Soluzione
Un metodo più semplice è quello di fare in questo modo:
if (Model.myObjects.Any(o => o.name == "thisobject"))
{
}
Altri suggerimenti
È possibile utilizzare il metodo FindAll come segue:
foreach(var item in Model.myObjects.FindAll(x=>x.Contains("thisobject")))
{
//Do your stuff with item
}
Il confronto di uguaglianza è buono solo per dire se due oggetti dello stesso tipo sono uguali. Io non conosco il tuo caso d'uso, ma potrebbe semplicemente fare qualcosa di simile
if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{
// Do something
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow