2014-05-05 2 views
0

Tout le monde me aider à convertir la requête SQL dans LINQTraduire SQL dans LINQ requête

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

J'ai essayé la requête ci-dessous et je ne sais pas comment obtenir les données de la table de rapport et se lient dans la classe utilisateur.

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

Répondre

1

Vous pouvez obtenir tout ce que vous voulez dans une seule requête sans boucle si votre « utilisateur » est un viewmodel qui détient des propriétés pour l'utilisateur et le rapport.

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(); 
1

Essayez celui-ci:

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); 
    }       
}