Cách viết định dạng truy vấn SQL trong C#

lập trình


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
" ;

コメント

タイトルとURLをコピーしました