我正在使用标准的ApplicationUser,并且我使用公共虚拟IColliction配置文件增强了模型;
E.g
public class ApplicationUser(){
...
public virtual ICollection<Profile> profiles;
}
我的个人资料型号:
public class Profile(){
public Guid ID;
...
public System.DateTime ValidFrom;
public System.DateTime ValidTo;
}
我希望为个人资料的ValidTo日期设置31/12/9999的永无止境日期。我想在配置文件控制器中获取配置文件。
我尝试了以下内容:
System.DateTime EndDate = DateTime.Parse("31/12/9999");
string currentUserId = User.Identity.GetUserId();
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);
Profile profile = currentUser.Profiles.Select(s => s.ValidityEndDate >= EndDate);
我收到以下错误:
错误1无法隐式转换类型 'System.Collections.Generic.IEnumerable'到 'datex.Models.Profile'。存在显式转换(您是否遗漏了 演员?)
我假设我绝对不是正确的赛道,有人可以帮忙吗?
答案 0 :(得分:3)
Select
返回一个IEnumerable,而不是一个Profile对象。您应该使用FirstOrDefault
,例如.FirstOrDefault(s => s.ValidityEndDate >= EndDate)
或更改profile
变量的类型以接受IEnumerable<Profile>
。
日期与此错误无关,但在DateTime.Parse
中使用特定于语言环境的字符串可能导致发布。在这种特殊情况下,您可以使用DateTime.MaxValue而不是硬编码日期