2010-04-23 7 views
12
 var stuff = ctx.spReport(); 
     var StuffAssembled = new List<ReportCLS>(); 
     var val = new List<ReportCLS>(); 
     foreach (var item in stuff) 
     { 
      StuffAssembled.Add(new ReportCLS(item)); 

     } 

     val.Add(StuffAssembled.First()); 

Maintient jeterGénérique Liste .Premier ne fonctionne pas LINQ

System.Collections.Generic.List « ne contient pas de définition de « Première » et aucune méthode d'extension « d'abord » d'accepter un premier argument de type » System.Collections.Generic.List 'peut être trouvé (manque-t-il une directive using ou une référence d'assembly?)

Qu'est-ce qui ne va pas?

d'ailleurs comment puis-je le réparer?

Merci

Répondre

39

vous devez ajouter à vos déclarations using:

using System.Linq; 
+1

C'était ça ... Intellisense ne suggérait pas de l'ajouter non plus. et j'ai continué à voir (System.Data.Linq) et j'ai pensé que j'étais bon. – MarkKGreenway

6

Quelques choses à vérifier:

  • Vous ciblez .NET 3.5 ou supérieur (ou vous » re utilisant LINQBridge)
  • Vous avez une référence à l'ensemble System.Core
  • Vous avez une directive à l'aide pour System.Linq

Fondamentalement, ce que le message d'erreur suggère ...

EDIT: En outre, votre code actuel pourrait être beaucoup plus simple:

var stuff = ctx.spReport(); 
var stuffAssembled = stuff.Select(x => new ReportCLS(x)).ToList(); 
var val = new List<ReportCLS> { stuffAssembled.First() }; 

En outre, si vous êtes effectivement en utilisant un List<T> alors vous pourriez aussi bien utiliser list[0] au lieu de list.First() :) Les deux vont jeter une exception si la liste est vide, même si l'exception sera diff euh, bien sûr.

1

Cette erreur de compilation se produit généralement lorsque vous

  • oublié d'inclure les importations pour les extensions LINQ (en utilisant System.Linq)
  • oublié de faire référence à l'assemblage avec des extensions LINQ
  • cadre de ciblage de 2.0, qui n'inclut pas LINQ par défaut
Questions connexes