[ad_1]
Xin chào các chuyên gia, tôi có một loạt mã ở dạng SQL Query, trong mã này tôi đã nối 3 bảng lại với nhau.
đây là mã của tôi:
select distinct(t.UserNO),t.UserName,s.TotalDays from User_Tbl as t join( select ChartNo from Chart_Rest_Tbl) as f ON t.UserNO = f.ChartNo join(select ChartNO, sum(Days) as TotalDays from Chart_Rest_Tbl group by ChartNo) AS s ON f.ChartNO = s.ChartNo
Bây giờ tôi muốn viết mã ở trên ở định dạng C#, giống như mã này (Ý tôi là cách viết mã ở trên ở định dạng c#, Mã bên dưới chỉ là một ví dụ và tôi không liên quan gì đến mã bên dưới):
var st = (from s in db.Worker_Tbl join o in db.User_Tbl on s.WorkerNO equals o.UserNO where o.UserNO == txtsearch1 select new { s.WorderId, o.UserName, s.WorkerNO, s.GPEntireDate, s.GPExpiredDate, s.GPCount }).ToList();
Những gì tôi đã thử:
tôi không biết viết
SUM(Days)
ở định dạng C# hoặc cách viết
distinct
cảm ơn bạn đã dành thời gian <3
Giải pháp 1
Đây là định dạng LINQ trong C# từ truy vấn SQL của bạn.
C#
var query = from t in dbContext.User_Tbl join f in dbContext.Chart_Rest_Tbl.Select(x => x.ChartNo).Distinct() on t.UserNO equals f join s in dbContext.Chart_Rest_Tbl.GroupBy(x => x.ChartNo) .Select(g => new { ChartNO = g.Key, TotalDays = g.Sum(x => x.Days) }) on f equals s.ChartNO select new { UserNO = t.UserNO, UserName = t.UserName, TotalDays = s.TotalDays }; var result = query.Distinct().ToList();
Để sửa đổi hoặc tham khảo thêm, bạn có thể thử các công cụ bên dưới để chuyển đổi truy vấn SQL của mình sang định dạng LINQ trong C#:
LINQPad – Sân chơi của lập trình viên .NET[^]
Trang chủ – Linqer[^]
Giải pháp 2
C#
string sql = @" select distinct(t.UserNO),t.UserName,s.TotalDays from User_Tbl as t join( select ChartNo from Chart_Rest_Tbl) as f ON t.UserNO = f.ChartNo join(select ChartNO, sum(Days) as TotalDays from Chart_Rest_Tbl group by ChartNo) AS s ON f.ChartNO = s.ChartNo " ;
[ad_2]
コメント