Erreur ne peut pas convertir de ‘System.Collections.Generic.List ‘ en ‘GameLibrary.Cards.Card’

private List<List> GetCardMatchesInHand() { List list4; List<List> list = new List<List>(); List list2 = new List() List list3 = new List(); list4 = new List { list2, list3, list4 }; List list5 = this.Cards.ToList(); using (List.Enumerator enumerator = this.Cards.GetEnumerator()) { Predicate match = null; Predicate predicate2 = null; Predicate predicate3 = null; Predicate predicate4 = null; Predicate predicate5 = null; Card c; while (enumerator.MoveNext()) { c = enumerator.Current; list5.Remove(c); if (match == null) { match = element => element.CardValue == c.CardValue; } Card item = list5.Find(match); if (item != null) { if (predicate2 == null) { predicate2 = element => element.CardValue == c.CardValue; } if (list2.Exists(predicate2)) { if (predicate3 == null) { predicate3 = element => element.CardValue == c.CardValue; } item = list2.Find(predicate3); list2.Remove(item); list3.Add(c); } else { if (predicate4 == null) { predicate4 = element => element.CardValue == c.CardValue; } if (list3.Exists(predicate4)) { if (predicate5 == null) { predicate5 = element => element.CardValue == c.CardValue; } item = list3.Find(predicate5); list3.Remove(item); list4.Add(c); } else { list2.Add(c); } } } } } return list; } 

Je reçois ladite erreur sur cette ligne “list2, list3, list4”. Maintenant, pourquoi je reçois cette erreur? C’est le code entier posté maintenant. Peut-être que maintenant vous pouvez voir ce que j’essaie de faire. Également en utilisant ceci pour vérifier la correspondance dans la liste.

  List<List> cardMatches = this.GetCardMatchesInHand(); 

Il essaie de faire l’équivalent de:

 List tmp = new List(); tmp.Add(list2); tmp.Add(list3); tmp.Add(list4); List list4 = tmp; 

Maintenant, vous ne pouvez pas appeler Add avec une liste du type d’élément – c’est pourquoi vous obtenez cette erreur. Vous essayez également d’utiliser list4 lorsque vous affectez une valeur à list4 pour la première fois.

Ce que vous essayez d’obtenir n’est pas vraiment clair, mais si vous voulez que list4 soit l’ensemble des éléments de list3 et list3 , vous pouvez utiliser:

 List list4 = list2.Concat(list3).ToList(); 

Ou si vous vouliez vraiment que list4 soit une liste de listes, vous devez le déclarer de cette façon et appeler le constructeur approprié:

 // Note not using list4 within the initializer... List> list4 = new List> { list2, list3 }; 

Votre méthode entière semble un peu confuse pour le moment – vous n’utilisez pas du tout la variable list et vous list4 beaucoup plus tôt que vous ne l’utilisez. Ni l’un ni l’autre n’est une erreur, mais les deux sont un peu étranges.