如何解决如何防止列表中的项目在未填写且应该为“ null”时返回“ 0”?
这是一个很难问的问题,但这是我的问题:
我正在用从不同类中获得的数据填充网格,该类使用了一个(通用)模型,该模型可以表示多个模型:
模型(可以表示船只或容器):
public class DataGridInstallationRow
{
[Key]
public string Name { get; set; }
//Vessel
public int IMO { get; set; }
public int MMSI { get; set; }
public int EEOI { get; set; }
public int FOC { get; set; }
[Display(Name = "Total Fuel Mass")]
public int TotalFuelMass { get; set; }
[Display(Name = "Average Speed")]
public int AverageSpeed { get; set; }
[Display(Name = "Total Distance Sailed")]
public int TotalDistanceSailed { get; set; }
//Container
[Display(Name = "Generated by Sun")]
public int EnergyGeneratedBySun { get; set; }
[Display(Name = "Generated by Wind")]
public int EnergyGeneratedByWind { get; set; }
[Display(Name = "Generated by Generator")]
public int EnergyGeneratedByGenerator { get; set; }
[Display(Name = "Consumed by EV's")]
public int EnergyConsumedByEV { get; set; }
[Display(Name = "Consumed by Construction Site")]
public int EnergyConsumedByConstructionSite { get; set; }
}
我的提供商中使用了此模型:
if (fleet.Type.Equals("Container"))
{
return Enumerable.Range(0,10).Select(i => new DataGridInstallationRow()
{
Name = $"Container {i}",EnergyGeneratedBySun = 13,EnergyGeneratedByWind = 19,EnergyGeneratedByGenerator = 3,EnergyConsumedByEV = 15,EnergyConsumedByConstructionSite = 24
}).ToList();
}
else
{
return Enumerable.Range(0,10).Select(i => new DataGridInstallationRow()
{
Name = $"Vessel {i}",IMO = 231,MMSI = 1344,EEOI = 8121,FOC = 123,TotalFuelMass = 6817,AverageSpeed = 14,TotalDistanceSailed = 1560
}).ToList();
}
如您所见,根据Fleet.Type,其中一个被填充。如果Fleet.Type是容器,则对象将如下所示:
您可以看到“血管”的属性也全部填充为“ 0”,我希望这些属性为空而不是“ 0”,因为我的数据网格现在同时填充了两个模型:
避免和解决此问题的最佳做法是什么?
更新
Dogac的适用解决方案:
if (fleet.Type.Equals("Container"))
{
return Enumerable.Range(0,EnergyConsumedByConstructionSite = 24
}).Where(row =>
{
return row.EnergyGeneratedBySun.HasValue &&
row.EnergyGeneratedByWind.HasValue &&
row.EnergyGeneratedByGenerator.HasValue &&
row.EnergyConsumedByEV.HasValue &&
row.EnergyConsumedByConstructionSite.HasValue;
}).ToList();
}
else
{
return Enumerable.Range(0,TotalDistanceSailed = 1560
}).Where(row =>
{
return row.IMO.HasValue &&
row.MMSI.HasValue &&
row.EEOI.HasValue &&
row.FOC.HasValue &&
row.TotalFuelMass.HasValue &&
row.AverageSpeed.HasValue &&
row.TotalDistanceSailed.HasValue;
}).ToList();
}
仍然无法正常工作,我再次收到包含可空项目的列表。
预先感谢
解决方法
尝试使所有属性为空。
赞:
// Vessel
public int? IMO { get; set; }
public int? MMSI { get; set; }
public int? EEOI { get; set; }
public int? FOC { get; set; }
编辑评论:
Enumerable.Range(0,10).Select(i => new DataGridInstallationRow()
{
Name = $"Vessel {i}",IMO = 231,MMSI = 1344,EEOI = 8121,FOC = 123,TotalFuelMass = 6817,AverageSpeed = 14,TotalDistanceSailed = 1560
}).Where(row =>
{
return row.IMO.HasValue &&
row.MMSI.HasValue &&
row.EEOI.HasValue &&
row.FOC.HasValue &&
row.TotalFuelMass.HasValue &&
row.AverageSpeed.HasValue &&
row.TotalDistanceSailed.HasValue;
}).ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。