我有一个方法返回一个字典:
public async Task<Dictionary<DateTime, double>> GetAvailableTimeOffWithExpiration(int userId)
{
..../ code here
Dictionary<DateTime, double> expirationDates = ...
return expirationDates;
}
然后我想将字典的第一个值分配给TimeOffApproved
模型的DateTime变量:
var timeOffWithExpiration = await this.GetAvailableTimeOffWithExpiration(u.Id);
var TimeOff = new TimeOffApproved()
{
ExpirationDate = timeOffWithExpiration.First()
};
但是返回错误:
错误CS0029:不能隐式转换类型"System.Collections.Generic.KeyValuePair<系统。日期时间,双时间的系统。DateTime>
如果我使用First()
语句,为什么要尝试分配字典?
如果Dictionary
是对对值,则First()
方法返回集合的第一个元素。要获得日期部分,您需要将.Value
或.Key
(取决于您需要的部分-在您的情况下是.Key)添加到语句中,如下所示:
var timeOffWithExpiration = await this.GetAvailableTimeOffWithExpiration(u.Id);
var TimeOff = new TimeOffApproved()
{
ExpirationDate = timeOffWithExpiration.First().Key
};
我建议检查以确保第一个元素不为空,例如(由于编译器错误而更正):
var timeOffWithExpiration = await this.GetAvailableTimeOffWithExpiration(u.Id);
if (timeOffWithExpiration != null)
{
var TimeOff = new TimeOffApproved()
{
ExpirationDate = timeOffWithExpiration.Any() ? timeOffWithExpiration.First().Key : new DateTime()
};
}