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

Keeps némDanh sách Generic .First không làm việc LINQ

System.Collections.Generic.List 'không chứa một định nghĩa cho 'đầu tiên' và không có phương pháp mở rộng 'đầu tiên' chấp nhận một đối số đầu tiên của loại' System.Collections.Generic.List 'có thể được tìm thấy (bạn đang thiếu một chỉ thị sử dụng hoặc một tham chiếu lắp ráp?)

điều gì đang xảy ra?

hơn thế nữa để khắc phục sự cố?

Cảm ơn

Trả lời

39

bạn nên thêm video này vào using báo cáo của bạn:

using System.Linq; 
+1

Đó là ... Intellisense cũng không đề xuất tôi thêm nó. và tôi tiếp tục nhìn thấy (System.Data.Linq) và nghĩ rằng tôi đã tốt. – MarkKGreenway

6

Một số điều cần kiểm tra:

  • Bạn đang nhắm mục tiêu NET 3.5 hoặc cao hơn (hoặc bạn' đang sử dụng LINQBridge)
  • Bạn có tham chiếu đến System.Core assembly
  • Bạn có một chỉ thị sử dụng cho System.Linq

Về cơ bản những gì được thông báo lỗi cho ...

EDIT: Ngoài ra, mã hiện tại của bạn có thể đơn giản hơn rất nhiều:

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

Ngoài ra, nếu bạn đang thực hiện thực sự bằng cách sử dụng List<T> thì bạn cũng có thể chỉ sử dụng list[0] thay vì list.First() :) Cả hai sẽ ném ngoại lệ nếu danh sách trống, mặc dù ngoại lệ sẽ khác er, tất nhiên rồi.

1

lỗi thời gian biên dịch này thường xảy ra khi bạn

  • quên bao gồm nhập khẩu cho LINQ phần mở rộng (sử dụng System.Linq)
  • quên tham khảo lắp ráp với LINQ mở rộng
  • nhắm mục tiêu 2,0 khuôn khổ, mà không bao gồm LINQ theo mặc định
Các vấn đề liên quan