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我會記住這一點以備將來參考,謝謝! –