我之前發佈了一個問題,但現在我已經縮小了問題範圍,這是非常不同的。基本上,我有一個相當長的查詢,旨在從數據庫選擇值到一個自定義結構(我將在下面顯示),但我遇到了連接問題 - 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