[ad_1]
Tôi có hai bảng trong cơ sở dữ liệu mà tôi muốn kết hợp và làm việc với dữ liệu đó.
Vì vậy, tôi đã sử dụng đoạn mã đó:
var listOfFoundRespIds = (from a in context.Adresses join e in context.ExtraData on a.LFD equals e.lfd where a.PROJID == 2048 select new { RESPID = e.str03, LFD = e.lfd, PROJID = a.PROJID }) .ToList();
Bản thân bảng cơ sở dữ liệu có 31.966.037 mục.
Trong khi gỡ lỗi (ngay sau khi thực thi mã), tôi đã khởi động Trình xem iEnumeration và xem xét ngữ cảnh. Địa chỉ và thực hiện xuất csv. Có 995.101 mục trong danh sách đó. Vì vậy, tại thời điểm thực hiện, tôi không có tất cả các mục từ bảng chính để làm việc với nó.
Có lẽ ai cũng có ý kiến gì, cách khắc phục?
Những gì tôi đã thử:
Đã kiểm tra IEnumeration Viewer và kiểm tra csv
Kiểm tra kỹ cơ sở dữ liệu
Đọc tài liệu về Entity Framework và các nội dung SQL khác.
Giải pháp 1
Bạn đang thực hiện một INNER JOIN
– bạn sẽ chỉ nhận được kết quả từ Addresses
bảng có bản ghi tương ứng trong ExtraData
bàn.
Nếu bạn muốn tất cả các bản ghi từ Addresses
bảng, ngay cả khi chúng không có bản ghi tương ứng trong ExtraTable
thì bạn cần thực hiện một LEFT JOIN
.
Thực hiện nối ngoài bên trái (LINQ trong C#) – C# | Microsoft Tìm hiểu[^]
from a in context.Adresses join ed in context.ExtraData on a.LFD equals e.lfd into edg from e in ed.DefaultIfEmpty() where a.PROJID == 2048 select new { RESPID = e.str03, LFD = e.lfd, PROJID = a.PROJID }
[ad_2]
コメント