2012-07-10 9 views
19

Tôi nhận được một lỗi khi sử dụng đoạn mã sauLàm thế nào để giải quyết lỗi này trong C#?

var v1 = from P in db1.QuranWordsNews where P.Aye == perId select P; 
var vv = v1.LastOrDefault(); // The error occurs here 

Thông điệp:

LINQ to Entities không nhận ra phương pháp 'TashihQuran.QuranWordsNew LastOrDefaultQuranWordsNew' phương pháp , và điều này không thể dịch thành một biểu thức cửa hàng.

+0

bản sao có thể có của [Lỗi, phương pháp không được LINQ hỗ trợ đối tượng] (http://stackoverflow.com/questions/2170141/error-method-not-supported-by-linq-to-entities) – sloth

+0

Có thể trùng lặp của [LINQ To Entities không nhận ra phương thức Cuối cùng. Thật không?] (Http://stackoverflow.com/questions/7293639/linq-to-entities-does-not-recognize-the-method-last-really) –

Trả lời

36

Tôi đoán bạn vẫn đang làm việc trong IQueriable. Hãy thử thay

var vv = v1.ToList().LastOrDefault(); 

hoặc, thanh lịch hơn

var vv = v1.AsEnumerable().LastOrDefault(); 
+0

Điều này giúp tôi rất nhiều !!!! –

45

Có lẽ câu trả lời tốt hơn là ở đây:

var vv = v1.OrderByDescending(rec => rec.Id).FirstOrDefault(); 

Fetch tất cả hồ sơ từ cơ sở dữ liệu để sử dụng chỉ là kỷ lục cuối cùng là không tốt.

+1

Đồng ý với tuyên bố của bạn, nhưng trong trường hợp OP, không v1 đã chứa "tất cả hồ sơ" từ cơ sở dữ liệu? – gitsitgo