第一条语句对字典结果不起作用



我有一个方法返回一个字典:

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()
};
}

最新更新