2017-05-25 129 views
-2

当使用Select()我收到此错误无法隐式转换类型“System.Collections.Generic.List <int>”到“System.Collections.Generic.IEnumerable <Model>”

无法隐式转换类型“System.Collections中.Generic.List < int>'to'System.Collections.Generic.IEnumerable < OgrenciEvi.Areas.Message.Models.MessageModel>'。

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

的usermodel:

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信使所以在左侧的面板中。我应该得到列表消息的发件人姓名和最后一条消息。但我不能使它:)

+1

什么是model.Message类型? –

+1

请提及左操作数的类型。 –

+1

你能告诉我们什么是数据类型model.Messages?你为什么使用select? –

回答

-1

使消息是IEnumerable类型

+0

通用< string> –

+0

是什么让你觉得改变'Messages'属性的类型甚至是一个选项?当然,如果它具有类型“IEnumerable”,它可以接受对任何“IEnumerable”的引用,包括完全不同类型对象的列表。但是,这并不意味着这样做会使代码的其余部分具有任何意义。这里的目标是解决OP的问题,而不仅仅是以某种方式停止编译器错误。 –

0

你还没有带出您的视图模型类代码。但假设model.Messages类型为List<Message>,以下内容应该可以工作:

var model = new ViewModel(); 
    int UserID = int.Parse(User.Identity.GetID()); 
    model.Messages = db.Message.Where(m => m.ReceiverID == UserID || m.SenderID == UserID).ToList(); 
相关问题