0

これは私のメッセージクラスです:

public class SMessage
{

    public int AccountId { get; set; }

    public int MessageId { get; set; }

    public string str{ get; set; }
    public string Subject { get; set; }
    public int sendByAccountId { get; set; }
    [ForeignKey("sendByAccountId")]
    public virtual AccountModels account { get; set; }

}

これは私のdtoクラスです:

public class MessageInformation
{
    public string Subject { get; set; }
    public string str { get; set; }    
}

これはリポジトリでの私の方法です:

public List<MessageInformation> GetAllMessagesForUser(int accountId)
{
    MessageInformation messages
    using (SishanContext Context = new SishanContext())
    {
         messages = (from m in Context.SMessages.ToList()
                    where m.AccountId == accountId
                    select new MessageInformation
                    {
                       m.Subject,
                       m.str
                    }).ToList();
    }
    return messages;
}

しかし、私はエラーがあります:

'System.Collections.IEnumerable' を実装していないため、型 'sishan.Models.MessageInformation' をコレクション初期化子で初期化できません
4

1 に答える 1

2

次のように、初期化子でプロパティに名前を付ける必要があります。

...
select new MessageInformation {
    Subject = m.Subject,
    str = m.str
}

または、引数が 2 つのコンストラクターを指定して呼び出すこともできます。

public class MessageInformation {
    public string Subject { get; set; }
    public string str { get; set; }
    public MessageInformation(string subj, string str) {
        Subject = subj;
        this.str = str;
    }
}
...
select new MessageInformation(m.Subject, m.str)
于 2013-03-08T14:56:05.663 に答える