我的费率表中的字段是Route,VehicleMasterId,VehicleType,Material,Client,UnitRate等。
我必须获取单行的优先顺序是:VehicleNo>路线>客户> VehicleType,Material
假设我有2行具有相同的数据,除了1有客户端和车辆类型,另一行有VehicleNo.Then根据我的优先级,我应该选择与VehicleNo的行的速率。
要执行此操作在linq中,我首先选择了具有匹配数据的所有行。这是我的代码。
public RateMasterDataModel GetRateMasterforCn(Consignment cn){
// I will always pass all the above fields in cn
var rateMaster = (from rate in Context.RateMaster
where rate.FromDate <= cn.Cndate
&& rate.ToDate >= cn.Cndate
&& (rate.VehicleTypeId != null ? rate.VehicleTypeId == cn.VehicleTypeId : true)
&& (rate.VehicleMasterId != null ? rate.VehicleMasterId == cn.VehicleMasterId : true)
&& (rate.ClientId != null ? rate.ClientId == cn.ClientId : true)
&& (rate.RouteId != null ? rate.RouteId == cn.RouteId : true)
&& (rate.MaterialMasterId != null ? rate.MaterialMasterId == cn.MaterialMasterId : true)
select new RateMasterDataModel
{
RateMasterId = rate.RateMasterId,
FromDate = rate.FromDate,
ToDate = rate.ToDate,
ClientId = rate.ClientId ,
VehicleMasterId = rate.VehicleMasterId,
VehicleTypeId = rate.VehicleTypeId,
MaterialMasterId = rate.MaterialMasterId,
UnitRate = rate.UnitRate,
LoadTypeId = rate.LoadTypeId,
LoadingPointId = rate.RouteId,
CalculationMasterId = rate.CalculationMasterId
}).ToList();
}
请在此之后建议如何过滤。
答案 0 :(得分:1)
您可以使用以下代码获取VehicleNo&gt;所订购的记录。路线
.ThenBy()
根据列要求添加多个{{1}}子句以对数据进行排序。
答案 1 :(得分:0)
你的意思是说,如果没有vehicalno的行。填充然后必须选择具有Route的行。它是否正确?