0
下面的代码片段显示了我正在使用的方法(尝试)在具有相同VIN时选择车辆的“最新”驱动程序。这种方法被称为AFTER我使用LINQ获取所有车辆在特定位置的所有交易。在C#/ LINQ:如何在列值不恒定的情况下进行分组
group vehicle by new部分中, DriverLastName是唯一可以逐行更改的列。 vehiclesGrp的返回类型为IQueryable的
var vehiclesGrp = from vehicle in inVehicles
group vehicle by new
{
vehicle.CCName,
vehicle.DADDivision,
vehicle.DADArea,
vehicle.DADDistrict,
vehicle.DADCity,
vehicle.Vin,
vehicle.CostCenter,
vehicle.GLDivision,
vehicle.VehicleMake,
vehicle.FuelTankCapacity,
vehicle.FuelType,
vehicle.EplanNumber,
vehicle.LicensePlate,
vehicle.DateInService,
vehicle.EstimatedMpg,
vehicle.VehicleStatus,
vehicle.DriverLastName,
}
into grp
select new VehicleDetail
{
Account = "",
ActualMpg = 0,
NoteID = 0,
NoteCount = 0,
CardNum = "",
CCName = grp.Key.CCName,
CostCenter = grp.Key.CostCenter,
DADArea = grp.Key.DADArea,
DADCity = grp.Key.DADCity,
DADDistrict = grp.Key.DADDistrict,
DADDivision = grp.Key.DADDivision,
DateInService = grp.Key.DateInService,
DriverLastName = grp.Key.DriverLastName,
EplanNumber = grp.Key.EplanNumber,
EstimatedMpg = grp.Key.EstimatedMpg,
Exception = "",
Exceptions = grp.Sum(vehicle => vehicle.Exception == null ? 0 : 1),
ExpenseType = "",
FuelGals = grp.Sum(vehicle => vehicle.FuelGals),
FuelPin = "",
FuelTankCapacity = grp.Key.FuelTankCapacity,
FuelType = grp.Key.FuelType,
FuelUnitCost = 0,
GLDivision = grp.Key.GLDivision,
IntAcctPd = 0,
InvoiceLineItem = "",
LicensePlate = grp.Key.LicensePlate,
MaintenanceKey = "",
Odometer = grp.Max(vehicle => vehicle.Odometer),
OutOfServiceDate = null,
SwdsStoreCc = "",
TotalAllCost = grp.Sum(vehicle => vehicle.TotalAmount),
TotalAmount = 0,
TotalFuelCost = grp.Sum(vehicle => vehicle.ExpenseType == "FUEL" ? vehicle.TotalAmount : 0),
TotalMaintCost = grp.Sum(vehicle => vehicle.ExpenseType == "MAINT" ? vehicle.TotalAmount : 0),
TotalMiscCost = grp.Sum(vehicle => vehicle.ExpenseType == "MISC" ? vehicle.TotalAmount : 0),
TransactionDate = grp.Max(vehicle => vehicle.TransactionDate),
TranTime = "",
TranDay = "",
UnitCost = 0,
VehicleMake = grp.Key.VehicleMake,
VehicleStatus = grp.Key.VehicleStatus,
VendorAddress = "",
VendorCity = "",
VendorName = "",
VendorState = "",
VendorZip = "",
Vin = grp.Key.Vin
};
return vehiclesGrp;
如果司机“迈克”对每月的31号,和驱动程序交易“约翰”不,那么麦克应该显示为司机。如果他们都出现在31日,我不关心哪个车手,只要VIN不重复。
对此的任何帮助将不胜感激。
此外,如果有任何信息我遗漏了,请告诉我,我会尽我所能。
只是一个建议,尽量减少你的问题,只有基本的,城市,Mpg ...与问题无关。我们喜欢帮忙,但我们的时间有限,所以当我看到这么久的事情时,我就继续前进。 [如何创建最小,完整和可验证的示例](http://stackoverflow.com/help/mcve) –
不要在'DriverLastName'上进行分组并且执行'DriverLastName = grp.OrderyBy(v => v.DriveDate ).Last()。DriverLastName' – juharr
@JuanCarlosOropeza我会记住这一点以备将来参考,谢谢! –