我有一些用C#编写的代码。我的课程如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DrivetimeFileDump
{
public class DriveTimeObject
{
public decimal? _Parts;
public decimal? Parts
{
get { return _Parts; }
set
{
if (value != null)
{
_Parts = value;
}
else
{
_Parts = 0.00M;
}
}
}
public decimal? GetAmountChargedParts(string ComponentStatus)
{
string[] ComponentStatuses = new string[] { "i", "n", "d", "w", "e", "v" };
foreach (var item in ComponentStatuses)
{
if (item == ComponentStatus)
{
return 0;
}
else
{
}
}
return _Parts;
}
我已经取出了工作代码,以便于阅读。然后,我使用Entity Framework来收集项目列表。
DriveTimeObject DT = new DriveTimeObject();
DateTime today = DateTime.Now;
DataQuery = (from z in dd.viewDriveTimeFileDump_V2 where z.dtmReported <= today select z).ToList();
我循环遍历每个项目,然后调用方法为下面的部分提供值。
foreach (var item in DataQuery)
{
decimal? AmountChargedParts = DT.GetAmountChargedParts(item.chrComponSts);
DataFile.Add( new DriveTimeObject
{
Parts = AmountChargedParts,
});
}
一切似乎都在流动,但是当设置值时,当我需要将其设置为0.00时,它将被设置为null。我不确定我做错了什么。感谢。
答案 0 :(得分:1)
在foreach
区块中,您正在为正在创建的Parts
设置DriverTimeObject
,但您似乎永远不会设置DT.Parts
。因此,每次调用DT.GetAmountChargedParts
时,它都找不到匹配的ComponentStatus
,它将返回_Parts
(对于当前实例:DT),它将始终为null。< / p>