Я опубликовал вопрос ранее, но теперь я сузил проблемы, и это нечто совсем другое. По сути, у меня довольно длинный запрос, целью которого является выбор значений из базы данных в пользовательскую структуру (которую я покажу ниже), но у меня возникают проблемы с объединением - попытка выбрать только первую строку объединения , Вот мой запрос:
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
на Where) я получаю ошибку об отсутствии прозрачности, преобразующей anonymoustype в тип «vehicledetials». Обе ошибки возникают при вызове from c in con.DefaultIfEmpty()
.
Любые идеи будут очень, очень ценится