Tôi có một bảng, cho phép gọi nó là Ghi. Có chứa: ID (int) | CustID (int) | Thời gian (datetime) | Dữ liệu (varchar)C# LINQ truy vấn (MYSQL EF) - Bản ghi riêng biệt và mới nhất
tôi cần những kỷ lục mới nhất (gần đây nhất) cho mỗi khách hàng:
SQL phiên bản
select * from record as i group by i.custid having max(id);
LINQ 1
dgvLatestDistinctRec.DataSource = from g in ee.Records
group g by g.CustID into grp
select grp.LastOrDefault();
này ném một lỗi:
System.NotSupportedException was unhandled by user code Message=LINQ to Entities does not recognize the method 'Faizan_Kazi_Utils.Record LastOrDefault[Record ](System.Collections.Generic.IEnumerable`1[Faizan_Kazi_Utils.Record ])' method, and this method cannot be translated into a store expression. Source=System.Data.Entity
LINQ phiên bản 2
var list = (from g in ee.Records
group g by g.CustID into grp
select grp).ToList();
Record[] list2 = (from grp in list
select grp.LastOrDefault()).ToArray();
dgvLatestDistinctRec.DataSource = list2;
này hoạt động, nhưng không hiệu quả vì nó tải TẤT CẢ các bản ghi từ cơ sở dữ liệu vào bộ nhớ và sau đó trích xuất chỉ (thành viên gần đây nhất) cuối cùng của mỗi nhóm.
Có giải pháp LINQ nào tiếp cận hiệu quả và khả năng đọc của giải pháp SQL đã đề cập không?
Cách bạn đã đạt được Mysql + LINQ. DBSet có hỗ trợ Mysql không. Nếu vậy, bạn có thể vui lòng nói như thế nào ?. Tôi đã chết để đạt được điều này, và đã bỏ cuộc vào tuần trước. – prabhakaran
Tôi chỉ cần các điểm cốt lõi, ít nhất là nơi bạn đặt chuỗi kết nối đó. – prabhakaran