我之前发布了一个问题,但现在我已经缩小了问题范围,这是非常不同的。基本上,我有一个相当长的查询,旨在从数据库选择值到一个自定义结构(我将在下面显示),但我遇到了连接问题 - paticulary试图只选择连接的第一行。这里是我的查询:LINQ to SQL使用FirstOrDefault()加入问题
IENumerable<VehicleDetails> list = (
from s in dc.Vehicles
join veh in dc.VehicleTypes
on s.VehicleType equals veh.ID into vg
from v in vg.DefaultIfEmpty()
join consignments in dc.Consignments
.FirstOrDefault(x => x.TripDate > dateFrom &&
x.TripDate < dateTo &&
x.DeliveryDepot == depot.Letter &&
(x.DeliveryStatus == 2 || x.DeliveryStatus == 3))
on new
{
Reg = s.VehicleReg,
Depot = s.VehicleDepot
} equals new
{
Reg = consignments.VehicleReg,
Depot = consignments.DeliveryDepot
} into con
from c in con.DefaultIfEmpty()
select new
{
VehicleType = (
s.VehicleType == null ? "?":
v.VehicleType1.ToString()),
TotalRate = c.Rate + c.AddCharges,
VehicleReg = (string.IsNullOrEmpty(c.VehicleReg) ?
c.Subcontractor: c.VehicleReg),
VehicleTypeName = (v.VehicleTypeDescription == null ?
"SubContractor": v.VehicleTypeDescription)
});
我的结构:
public struct VehicleDetails
{
internal string VehicleType;
internal decimal TotalRate;
internal string VehicleReg;
internal string VehicleTypeName;
}
随着在FirstOrDefault()
第二加入,我得到:
在 类型的表达式之一的加盟子句是不正确的。在呼叫组 加入时,输入 推断失败。
没有它(并与更换FirstOrDefault
一凡代替),我得到含蓄错误转换的anonymoustype成“vehicledetials”类型。这两个错误都发生在from c in con.DefaultIfEmpty()
调用中。
任何想法将是非常,非常感激
请将您的代码缩减为代码问题。在目前的状态下,没有人会弄清楚并回答你的问题。 – Steven 2011-04-06 15:35:43