Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将DBNull.Value强制转换为类型';System.DateTime';。请使用可为空的类型。关于使用Linq查询_C#_Asp.net_Linq_Datatable - Fatal编程技术网

C# 无法将DBNull.Value强制转换为类型';System.DateTime';。请使用可为空的类型。关于使用Linq查询

C# 无法将DBNull.Value强制转换为类型';System.DateTime';。请使用可为空的类型。关于使用Linq查询,c#,asp.net,linq,datatable,C#,Asp.net,Linq,Datatable,我有两个名为dt1Cloned和dt2Cloned的数据表。我已经实现了用于连接这两个表的linq查询,如下所示: var res = (from p in dt1Cloned.AsEnumerable() join t in dt2Cloned.AsEnumerable() on p.Field<Int64>("WorkId") equals t.Field<Int64>("WorkId")

我有两个名为dt1Cloned和dt2Cloned的数据表。我已经实现了用于连接这两个表的linq查询,如下所示:

var res = (from p in dt1Cloned.AsEnumerable()
               join t in dt2Cloned.AsEnumerable()
            on p.Field<Int64>("WorkId") equals t.Field<Int64>("WorkId")
             select new
               {
                   DivisionId = p.Field<Int64>("DivisionId"),
                   DistrictId = p.Field<Int64>("DistrictId"),
                   MCId = p.Field<Int64>("MCId"),
                   ACId = p.Field<Int64>("ACId"),
                   PCId = p.Field<Int64>("PCId"),
                   DivisionName = p.Field<string>("DivisionName"),
                   DistrictName = p.Field<string>("DistrictName"),
                   MCName = p.Field<string>("MCName"),
                   AssemblyCName = p.Field<string>("AssemblyCName"),
                   ParliamentaryCName = p.Field<string>("ParliamentaryCName"),
                   WorkId = p.Field<Int64>("WorkId"),
                   WorkDetail = p.Field<string>("WorkDetail"),
                   WorkName = p.Field<string>("WorkName"),
                   RoadCode = p.Field<string>("RoadCode"),
                   AdApp = p.Field<string>("AdApp"),
                   //!Convert.IsDBNull(dr.t1.Field<DateTime?>("Step Start Time")) ? dr.t1.Field<DateTime?>("Step Start Time") : DBNull.Value 
                   //AdminAppDate = !Convert.IsDBNull(p.Field<DateTime>("AdminAppDate")) ? p.Field<DateTime>("AdminAppDate") : DBNull.Value,
                   AdminAppDate = p.Field<DateTime>("AdminAppDate"),
                   TargetDate = p.Field<DateTime>("TargetDate"),
                   AppAmt = p.Field<Int64>("AppAmt"),
                   TApp = p.Field<string>("TApp"),
                   TechAppDate = p.Field<DateTime>("TechAppDate"),
                   TAppAmt = p.Field<Int64>("TAppAmt"),
                   SourceOfFunds = p.Field<string>("SourceOfFunds"),
                   AllocatedAmt = p.Field<Int64>("AllocatedAmt"),
                   ReleaseAmt = p.Field<Int64>("ReleaseAmt"),
                   WStatus = p.Field<string>("WStatus "),
                   Expenditure = p.Field<string>("Expenditure"),
                   ExpenditurePer = p.Field<Int64>("ExpenditurePer"),
                   ProgressPercentage = p.Field<Int64>("ProgressPercentage"),
                   Progress = p.Field<string>("Progress"),
                   UserTypeId = p.Field<Int64>("UserTypeId"),
                   UserWorkType = p.Field<string>("UserWorkType"),
                   SchemeId = p.Field<Int64>("SchemeId"),
                   SchemeName = p.Field<string>("SchemeName"),
                   AgencyId = p.Field<Int64>("AgencyId"),
                   AgencyName = p.Field<string>("AgencyName"),
                   TADate = p.Field<DateTime>("TADate"),
                   AADate = p.Field<DateTime>("AADate"),
                   StatusDate = p.Field<DateTime>("StatusDate"),
                   ProgressDate = p.Field<DateTime>("ProgressDate"),
                   ReleaseDate = p.Field<DateTime>("ReleaseDate"),
                   AllocationDate = p.Field<DateTime>("AllocationDate"),
                   ExpDate = p.Field<DateTime>("ExpDate"),
                   TimeLimit = p.Field<Int64>("TimeLimit"),
                   TimeSpent = p.Field<Int64>("TimeSpent"),
                   TimeSpentPer = p.Field<double>("TimeSpentPer"),
                   TimeDiff = p.Field<double>("TimeDiff"),
                   EarthWorkP = p.Field<double>("EarthWorkP"),
                   EarthWorkC = p.Field<double>("EarthWorkC"),
                   SolingP = p.Field<double>("SolingP"),
                   SolingC = p.Field<double>("SolingC"),
                   WearingP = p.Field<double>("WearingP"),
                   WearingC = p.Field<double>("WearingC"),
                   RaisingP = p.Field<double>("RaisingP"),
                   RaisingC = p.Field<double>("RaisingC"),
                   StrengtheningP = p.Field<double>("StrengtheningP"),
                   StrengtheningC = p.Field<double>("StrengtheningC"),
                   PCLaidP = p.Field<double>("PCLaidP"),
                   PCLaidC = p.Field<double>("PCLaidC"),
                   ModifyDate = p.Field<DateTime>("ModifyDate"),
                   VillageName = t.Field<string>("VillageName"),
               }).ToList();
var res=(来自dt1Cloned.AsEnumerable()中的p)
在dt2Cloned.AsEnumerable()中加入t
p.Field(“WorkId”)等于t.Field(“WorkId”)
选择新的
{
部门ID=p.字段(“部门ID”),
DistrictId=p.Field(“DistrictId”),
MCId=p.字段(“MCId”),
ACId=p.字段(“ACId”),
PCId=p.字段(“PCId”),
分部名称=p.字段(“分部名称”),
DistrictName=p.Field(“DistrictName”),
MCName=p.Field(“MCName”),
AssemblyCName=p.Field(“AssemblyCName”),
议会名称=p.Field(“议会名称”),
工作ID=p.字段(“工作ID”),
WorkDetail=p.Field(“WorkDetail”),
WorkName=p.Field(“WorkName”),
道路代码=p.字段(“道路代码”),
AdApp=p.字段(“AdApp”),
//!Convert.IsDBNull(dr.t1.字段(“步骤开始时间”)?dr.t1.字段(“步骤开始时间”):DBNull.Value
//AdminAppDate=!Convert.IsDBNull(p.Field(“AdminAppDate”))?p.Field(“AdminAppDate”):DBNull.Value,
AdminAppDate=p.Field(“AdminAppDate”),
TargetDate=p.字段(“TargetDate”),
AppAmt=p.字段(“AppAmt”),
TApp=p.字段(“TApp”),
TechAppDate=p.Field(“TechAppDate”),
TAppAmt=p.字段(“TAppAmt”),
SourceOfFunds=p.Field(“SourceOfFunds”),
AllocatedAmt=p.字段(“AllocatedAmt”),
ReleaseAmt=p.字段(“ReleaseAmt”),
WStatus=p.Field(“WStatus”),
支出=p.字段(“支出”),
expenditurecur=p.字段(“expenditurecur”),
ProgressPercentage=p.字段(“ProgressPercentage”),
进度=p.字段(“进度”),
UserTypeId=p.Field(“UserTypeId”),
UserWorkType=p.Field(“UserWorkType”),
SchemeId=p.Field(“SchemeId”),
SchemeName=p.Field(“SchemeName”),
AgencyId=p.Field(“AgencyId”),
AgencyName=p.Field(“AgencyName”),
TADate=p.字段(“TADate”),
AADate=p.字段(“AADate”),
StatusDate=p.字段(“StatusDate”),
ProgressDate=p.字段(“ProgressDate”),
ReleaseDate=p.字段(“ReleaseDate”),
AllocationDate=p.字段(“AllocationDate”),
ExpDate=p.字段(“ExpDate”),
TimeLimit=p.字段(“TimeLimit”),
timespunt=p.字段(“timespunt”),
TimePentPER=p.字段(“TimePentPER”),
TimeDiff=p.字段(“TimeDiff”),
土方Kp=p.场(“土方Kp”),
蚯蚓KC=p.场(“蚯蚓KC”),
SolingP=p.Field(“SolingP”),
SolingC=p.Field(“SolingC”),
WearingP=p.字段(“WearingP”),
WearingC=p.字段(“WearingC”),
RaisingP=p.字段(“RaisingP”),
RaisingC=p.字段(“RaisingC”),
强化p=p.场(“强化p”),
强化C=p.场(“强化C”),
PCLaidP=p.字段(“PCLaidP”),
PCLaidC=p.Field(“PCLaidC”),
ModifyDate=p.字段(“ModifyDate”),
VillageName=t.Field(“VillageName”),
}).ToList();

在实现上述查询时,我遇到异常“无法将DBNull.Value强制转换为'System.DateTime'类型。请使用可为null的类型。”。如何解决此问题并处理所有数据类型的空值?

如果您的数据库字段可以为空,则还需要将正在读取的C#属性设置为空

将您的属性声明为可为空的
。这里有一个方便的速记:
DateTime?

public class Person
{
    // DateOfBirth is NOT nullable - everyone has a date of birth...
    public DateTime DateOfBirth { get; set; }

    // DateOfDeath IS nullable - not everyone is dead yet...
    public DateTime? DateOfDeath { get; set; }
}
然后,在投影新对象时,可以使用:

DateOfDeath = p.Field<DateTime?>("DateOfDeath"),
DateOfDeath=p.Field(“DateOfDeath”),

那就是ReleaseDate=p.Field(“ReleaseDate”)是的-我只是编辑了我的答案来补充:)我第一次没有很好地阅读这个问题…嗨@Neha。如果这个答案解决了你的问题,你会考虑接受吗?要做到这一点,请单击答案左侧的勾号,使其变为绿色-这就是我们在堆栈溢出问题上感谢人们的方式。谢谢这个错误说明了你需要做的一切,它不需要提问