2009-07-16 23 views
9

Tôi đang sử dụng .NET 3.5. Tại sao tôi vẫn nhận được:.NET List.Distinct

không chứa một định nghĩa cho 'biệt'

với mã này:

using System.Collections.Generic; 

     //.. . . . . code 


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

Trả lời

35

Bạn có

using System.Linq; 

?

Distinct là phương thức tiện ích được xác định trong System.Linq.Enumerable, do đó bạn cần phải thêm câu lệnh đó bằng cách sử dụng câu lệnh.

Và đừng quên thêm tham chiếu đến System.Core.dll (nếu bạn đang sử dụng VS2008, điều này đã được thực hiện cho bạn).

+0

+1 cho System.Core –

+1

Có một lý do để đặt tên nó như thế? –

+1

Martinho - đặt tên _what_ như _what_? –

5

Bạn quên thêm

using System.Linq; 

Distinct là một extension method được xác định trong System.Linq.Enumerable, vì vậy bạn chỉ có thể gọi nó là nếu bạn nhập mà không gian tên.

Bạn cũng sẽ cần phải thêm tham chiếu đến System.Core.dll.
Nếu bạn đã tạo dự án dưới dạng dự án .Net 3.5, nó sẽ được tham chiếu; nếu bạn nâng cấp nó từ .Net 2 hoặc 3, bạn sẽ phải tự thêm tham chiếu.

-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

Cung cấp bản sửa lỗi không trả lời câu hỏi "Tại sao". –

0

Từ MSDN blog: Charlie Calvert MSDN Blog Link

Để sử dụng trên .net fiddle: loại --project: Bảng điều khiển

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