【发布时间】:2017-05-25 04:01:07
【问题描述】:
使用Select() 时出现此错误
无法将类型“System.Collections.Generic.List
”隐式转换为“System.Collections.Generic.IEnumerable ”。
SiteContext db = new SiteContext();
[Route]
public ActionResult Index()
{
var model = new ViewModel();
int UserID = int.Parse(User.Identity.GetID());
model.Messages = db.Message.Where(m => m.ReceiverID == UserID || m.SenderID == UserID).Select(m=>m.SenderUser.Name).ToList();
return View(model);
}
我该如何解决?
编辑:
public class MessageModel
{
[Key]
public int MessageID { get; set; }
[Required(ErrorMessage = "Boş mesaj gönderilemez.")]
public string MessageContent { get; set; }
[Required]
public int SenderID { get; set; }
[Required]
public int ReceiverID { get; set; }
[Required]
public DateTime SendingDate { get; set; }
[Required]
public bool IsSeen { get; set; }
public virtual UserModel SenderUser { get; set; }
public virtual UserModel ReceiverUser { get; set; }
MessageModel() {
SendingDate = DateTime.Now;
}
}
用户模型:
public class UserModel
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int UserID { get; set; }
[Required (ErrorMessage ="İsim alanı boş geçilemez.")]
public string Name { get; set; }
[Required(ErrorMessage = "Soyadı alanı boş geçilemez.")]
public string Surname { get; set; }
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$",
ErrorMessage = "E-Posta adresi geçersiz.")]
[DataType(DataType.EmailAddress)]
public string Mail { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
[NotMapped] // Does not effect with your database
public string ConfirmPassword { get; set; }
public int Gender { get; set; }
[RegularExpression("^[0-9]*$", ErrorMessage ="Telefon numarası geçersiz.")]
public string PhoneNumber{ get; set; }
public int SmokeStatus { get; set; }
public DateTime RegistrationDate { get; set; }
[HiddenInput(DisplayValue = false)]
public string ReturnUrl{ get; set; }
[Range(1900,2000, ErrorMessage ="Doğum yılı 1900 ile 2000 yılları arasında olmalı.")]
[Required(ErrorMessage ="Yaş alanı boş geçilemez.")]
public int BirthYear { get; set; }
public string FacebookID { get; set; }
public bool Manager { get; set; }
public int AccessFacebook { get; set; }
public int AccessInstagram { get; set; }
public int AccessPhoneNumber { get; set; }
public int AccessTwitter { get; set; }
public List<LookingForaMateModel> LFMate { get; set; }
public List<LookingForaHome> LFHome { get; set; }
public List<AlbumModel> Album { get; set; }
public List<PropertyTransferModel> PropertyTransfer{ get; set; }
[ForeignKey("SenderID")]
public List<MessageModel> SenderUser { get; set; }
[ForeignKey("ReceiverID")]
public List<MessageModel> ReceiverUser { get; set; }
public UserModel() {
RegistrationDate = DateTime.Now;
}
}
我想为我的网站提供“直接消息”,并且设计看起来像 facebook messenger,所以左侧有一个面板。我应该得到列表消息的发件人姓名和最后一条消息。但我做不到:)
【问题讨论】:
-
model.Messages 的类型是什么?
-
请注明左操作数的类型。
-
你能告诉我们什么是数据类型model.Messages吗?为什么要使用 select ?
-
这里没有足够的上下文让任何人都能够回答您的问题。错误消息的原因很清楚,因为编译器消息本身很清楚,但是为什么您有一个名为
Name的字段的类型为int,以及为什么您认为可以从以下值的序列创建一个列表该字段,然后将其分配给期望完全不同类型的枚举的变量,根本不清楚。 -
请分享 Message 的模型类。在查看您提到的代码和异常消息后,我相信您已将 [User.Name] 定义为 Int 。 !!
标签: c# asp.net-mvc entity-framework