Linq to sql 帮助构建具有连接的LINQ2SQL查询
我有这个:Linq to sql 帮助构建具有连接的LINQ2SQL查询,linq-to-sql,Linq To Sql,我有这个: var q = (from order in db.Orders from payment in db.Payments .Where(x => x.ID == order.paymentID) .DefaultIfEmpty() from siteUser in db.SiteUsers
var q = (from order in db.Orders
from payment in db.Payments
.Where(x => x.ID == order.paymentID)
.DefaultIfEmpty()
from siteUser in db.SiteUsers
.Where(x => x.siteUserID == order.siteUserID)
.DefaultIfEmpty()
where siteUser.siteUserID != null
select new
{
order.orderID,
order.dateCreated,
payment.totalAmount,
siteUser.firstName,
siteUser.lastName
});
我想补充如下:
switch (_qs["sort"])
{
case "0":
q = q.OrderByDescending(x => x.dateCreated);
break;
case "1":
q = q.OrderBy(x => x.dateCreated);
break; ...
我以前用一个表做过这项工作,但是第一个代码块中的多个表迫使我指定一个select语句,这使它成为匿名类型。如何做到这一点
注意:我甚至尝试使用我正在选择的属性创建一个类,并将查询强制转换为这种类型,但仍然是不可行的。我不确定我是否理解这个问题,但您粘贴的代码对我来说是有效的 我检查:
var q = (
from order in db.Orders
join payment in db.Payments on
order.paymentID equals payment.ID into payments
from payment in payments.DefaultIfEmpty()
join siteUser in db.SiteUsers on
order.siteUserID equals siteUser.siteUserID into siteUsers
from siteUser in siteUsers.DefaultIfEmpty()
where siteUser.siteUserID != null
select
new
{
order.orderID,
order.dateCreated,
payment.totalAmount,
siteUser.firstName,
siteUser.lastName
});
switch (sort)
{
case "0":
q = q.OrderByDescending(x => x.dateCreated);
break;
case "1":
q = q.OrderBy(x => x.dateCreated);
break;
}
var restult = q.ToList();
这是可行的。我不确定我是否理解这个问题,但您粘贴的代码对我来说是有效的 我检查:
var q = (
from order in db.Orders
join payment in db.Payments on
order.paymentID equals payment.ID into payments
from payment in payments.DefaultIfEmpty()
join siteUser in db.SiteUsers on
order.siteUserID equals siteUser.siteUserID into siteUsers
from siteUser in siteUsers.DefaultIfEmpty()
where siteUser.siteUserID != null
select
new
{
order.orderID,
order.dateCreated,
payment.totalAmount,
siteUser.firstName,
siteUser.lastName
});
switch (sort)
{
case "0":
q = q.OrderByDescending(x => x.dateCreated);
break;
case "1":
q = q.OrderBy(x => x.dateCreated);
break;
}
var restult = q.ToList();
这是有效的。@Nick-如果这不能回答问题,请解释一下问题所在。你的权利确实有效。。。我不确定我以前吃的东西会不会起作用。谢谢@尼克-如果这还不能回答问题,请解释什么是错的。你的权利确实有效。。。我不确定我以前吃的东西会不会起作用。谢谢