2010-04-23 26 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()); 

Mantiene gettandoElenco generico .Prima non funziona LINQ

System.Collections.Generic.List 'non contiene una definizione per 'First' e nessun metodo di estensione 'First' accettare un primo parametro di tipo' Potrebbe essere trovato System.Collections.Generic.List '(ti manca una direttiva using o un riferimento di assembly?)

cosa non va?

inoltre come posso risolvere il problema?

Grazie

risposta

39

si dovrebbe aggiungere questo ai vostri using dichiarazioni:

using System.Linq; 
+1

Questo era ... l'Intellisense non suggeriva di aggiungerlo. e continuavo a vedere (System.Data.Linq) e pensavo di essere bravo. – MarkKGreenway

6

Alcune cose da controllare:

  • Stai mira NET 3.5 o superiore (o si' usando LINQBridge)
  • Hai un riferimento all'assembly System.Core
  • Hai una direttiva using per System.Linq

Fondamentalmente ciò che il messaggio di errore suggerisce ...

EDIT: Inoltre, il codice corrente potrebbe essere molto più semplice:

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

Inoltre, se sei in realtà utilizzando un List<T> quindi potresti anche usare list[0] invece di list.First() :) Entrambi genereranno un'eccezione se l'elenco è vuoto, anche se l'eccezione si diff Ehm, naturalmente.

1

Questo errore di compilazione si verifica in genere quando si

  • dimenticato di includere le importazioni per le estensioni LINQ (usando System.Linq)
  • dimenticato di fare riferimento a montaggio con estensioni LINQ
  • rivolti 2.0 quadro, che non include LINQ per impostazione predefinita