[英]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.