2009-07-16 11 views
9

Estoy usando .NET 3.5. ¿Por qué estoy todavía se tienen:.NET List.Distinct

no contiene una definición para 'Distinto'

con este código:

using System.Collections.Generic; 

     //.. . . . . code 


    List<string> Words = new List<string>(); 
     // many strings added here . . . 
    Words = Words.Distinct().ToList(); 

Respuesta

35

¿Estás

using System.Linq; 

?

Distinct es un método de extensión definido en System.Linq.Enumerable por lo que debe agregar esa instrucción using.

Y no olvide agregar una referencia al System.Core.dll (si usa VS2008, esto ya se ha hecho por usted).

+0

+1 para System.Core –

+1

¿Hay alguna razón para nombrarlo ¿como eso? –

+1

Martinho - nombrando _what_ like _what_? –

5

se le olvidó añadir

using System.Linq; 

Distinct es un extension method que se define en System.Linq.Enumerable, por lo que sólo puede llamar si importa ese espacio de nombres.

También deberá agregar una referencia al System.Core.dll.
Si creó el proyecto como un proyecto .Net 3.5, ya estará referenciado; si lo actualizó desde .Net 2 o 3, tendrá que agregar la referencia usted mismo.

-1
List<string> words = new List<string>(); 

// many strings added here . . . 

IEnumerable <string> distinctword =Words .distinct(); 

foreach(string index in distinctword) 
{ 
     // do what u want here . . . 
} 
+2

Proporcionar una solución no responde a la pregunta "Por qué". –

0

De MSDN blog: Charlie Calvert MSDN Blog Link

para usar en .net fiddle: tipo --project: Consola

using System; 
using System.Collections.Generic; 
using System.Linq; 

public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("Hello World"); 
     var listA = new List<int> { 1, 2, 3, 3, 2, 1 }; 
     var listB = listA.Distinct(); 

     foreach (var item in listB) 
     { 
      Console.WriteLine(item); 
     } 
    } 
} 
// output: 1,2,3