123 messaggi dal 12 febbraio 2016
Buongiorno a tutti e buona domenica.
Sono diversi giorni che non riesco a trovare una soluzione per utilizzare il metodo Any() in una collection List<T>.

Ho una ViewModel che contiene tra le diverse proprietà anche una collection List<PrezzoVM>.

 public class ProdottoVM
{
 public string Nomeprodotto { get; set; }
...
 public List<PrezzoVM> Prezzi { get; set; }
}


Nella View ho bisogno di individuare uno specifico elemento della collection Prezzi, per farlo ho scritto così
if (item.Prezzi.Any(x => x.ListinoId == user.ListinoId))
 {
  
 ...
 }


ma ottengo sempre False.
Ho provato anche con Exist, a convertire la List<T> in IEnumerable ma nulla,
ottengo sempre False.

Come risolvo?
11.872 messaggi dal 09 febbraio 2002
Contributi
Ciao,
Any ti restituirà true se nella collezione Prezzi esiste almeno un oggetto la cui proprietà ListinoId ha un valore uguale a quello di user.ListinoId.

Le cause per cui ti restituisce false possono essere:
  • La lista Prezzi è vuota o non contiene un oggetto con le suddette caratteristiche;
  • user.ListinoId ha un valore inatteso, come null o una stringa che contiene degli spazi in più o è scritta in maniera diversa (ad esempio con maiuscole/minuscole diverse);
  • ListinoId è un tipo complesso e perciò l'operatore == non compara i valori ma le istanze.


Puoi usare il debugger per verificare le prime due?
Per quanto riguarda la terza: di che tipo è ListinoId?

ciao,
Moreno

Enjoy learning and just keep making
123 messaggi dal 12 febbraio 2016
Grazie Moreno,
effettivamente dava sempre False perché non valorizzavo la proprietà ListinoId e quindi non era mai uguale alla proprietà ListinoId di user.
Scusate la richiesta, sarebbe bastato utilizzare il debug prima.

Grazie cmq,
saluti

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.