C# 检查C LINQ表达式中的NULL
我有一个LINQ表达式,它将日期格式从UTC转换为用户区域性的日期格式C# 检查C LINQ表达式中的NULL,c#,linq,C#,Linq,我有一个LINQ表达式,它将日期格式从UTC转换为用户区域性的日期格式 for (int i = 0; i < datexml.count ; i++) { if (datatype.ToLower() == "date") { myList.Select(c => { ((object[])(c))[i] = ConvertFromUTCDate( Convert.ToDateTime (((object[])(c))[i]), User
for (int i = 0; i < datexml.count ; i++)
{
if (datatype.ToLower() == "date")
{
myList.Select(c => { ((object[])(c))[i] = ConvertFromUTCDate( Convert.ToDateTime (((object[])(c))[i]), UserTimeZone); return c; }).ToList();
}
}
有时,如果对象[]c[i]中的日期值错误地存储在DB中,则该值可能为null或具有字符串或小数
如何检查值是否不为null且具有日期,然后在此表达式中转换它。为了避免增加复杂性并能够轻松读取和维护代码,请提取匿名方法并将其设置为命名方法 从 c=>{object[]c[i]=ConvertFromUTCDate Convert.ToDateTime 对象[]c[i],用户时区;返回c;} 到 及
我认为,通过尝试使用linq,您已经使自己的工作变得更加困难,您最好只做一个非linq的替代方案,让您能够正确且轻松地处理错误。您能告诉我们myList的类型吗?另外,您真的将字符串与ToLower进行比较吗?c的类型是什么?myList的类型是什么?所有的支架都在伤害我的眼睛。。。如果你能提供一个简短但完整的程序来演示这个问题,这将非常有帮助。我们也不知道ConvertFromUTCDate是什么,也不知道为什么要调用Select,然后调用ToList并忽略结果。基本上,这里的代码在当前形式下没有什么意义。ConvertFromUTCDate是一个静态函数,它将UTC日期转换为用户区域性日期,myList的类型为object myList=DataList.OfType.ToList;您还可以在OP的可怕linq中使用myList.Cast.Selectc=>ConvertFromObjectToDatec[i],它还将值设置为对象[]c[i]…修复了@Eric。事实上,我只是想证明简单的旧方法可以比Linq+ANONYUS方法更好。实际上并没有给出一个完全有效的解决方案。。。
public DateTime ConvertFromObjectToDate(object dbdate){
if(dbdate is null || !(dbdate is DateTime))return DateTime.MinValue;
var result = ConvertFromUTCDate(Convert.ToDateTime (dbdate),UserTimeZone);
return result;
}
c => {((object[])(c))[i] = ConvertFromObjectToDate(((object[])(c))[i]);}