簡體   English   中英

將SQL轉換為LINQ查詢

[英]Translate SQL into LINQ query

有人幫我將sql查詢轉換為linq

select * from user b,report t where b.Id = t.userid and b.report=1;

我嘗試了以下查詢,我不知道如何獲取報表數據並將其綁定在用戶類中。

public IEnumerable<user> getusers(int reportId)
{
    var users= new List<user>();

    using (var db = new DataContext())
    {
        var Users = (from b in db.user
                     join t in db.report on b.Id equals t.userid
                     where b.reportId == reportId
                     select new {user = db.user,report= db.report}).ToList();

        foreach (var myuser in Users)
        {
            foreach (var cust in myuser.user)
            {
                var newuser = new user
                    {
                        Id = cust.Id,
                        Address = cust.Adress,
                        City = cust.Ort,
                        CustomerIncident = cust.CustomerIncident,
                        DeliveryAddress1 = cust.Levadress1,
                        DeliveryAddress2 = cust.Levadress2,
                        Email = cust.Email,
                        //I need to get this from the report table
                        //ReportId = report.id,
                        //ReportPerson = report.person
                    };

                users.Add(newuser);
            }                        
        }
    }
    return users;
}

試試這個:

var users =  from u in db.user
             join r in db.report 
             on u.Id equals r.userid
             where u.reportId == reportId
             select new 
             {
                 User = u, 
                 Report = r
             };

foreach (var user in users)
{
    foreach (var cust in myuser.user)
    {
        var newUser = new user
        {
            Id = cust.Id,
            Address = cust.Adress,
            City = cust.Ort,
            CustomerIncident = cust.CustomerIncident,
            DeliveryAddress1 = cust.Levadress1,
            DeliveryAddress2 = cust.Levadress2,
            Email = cust.Email,
            ReportId = user.Report.report.id,
            ReportPerson = user.Report.report.person
        };

        users.Add(newUser);
    }                        
}

如果您的“用戶”是一個包含用戶和報告屬性的viewmodel,您可以在單個查詢中獲得所需的所有內容而無需循環。

var users = (from u in db.user
             join r in db.report on u.Id equals r.userid
             where u.reportId == reportId
             select new user
             {
                 Id = u.Id,
                 Address = u.Adress,
                 City = u.Ort,
                 CustomerIncident = u.CustomerIncident,
                 DeliveryAddress1 = u.Levadress1,
                 DeliveryAddress2 = u.Levadress2,
                 Email = u.Email,
                 ReportId = r.id,
                 ReportPerson = r.person
             }).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM