1

私はまだLINQに慣れていないので、問題が発生しています。これはすべてめちゃくちゃだと思いますが、いくつかのプロパティと異なるタイプ (プロジェクト) のオブジェクトを含むモデルがあります。エラーが表示されます: タイプ 'AnonymousType#1' を 'string' に変換できません。NotificationModel オブジェクトで参照されている ProjectModel オブジェクトから ProjectId と ProjectName を選択できるようにしたいと考えています。これは私が持っているものですが、これは機能しません。これを変更して ProjectModel オブジェクトから情報を正しく取得するにはどうすればよいですか?

通知モデル:

public int id { get; set; }
public int ProjectId { get; set; }
public string ProjectName { get; set; }
[StringLength(50)]
public string CreatedBy { get; set; }
public Nullable<System.DateTime> CreatedDateTime { get; set; }
public Nullable<bool> IsDeleted { get; set; 

public virtual ProjectModel Project { get; set; }

データを取得しようとしています:

        var notifications = (from a in db.NotificationsLog
                            where a.CreatedBy == userID
                            orderby a.CreatedDateTime ascending
                            select new NotificationModel
                            {
                                id = a.id,
                                ProjectId =  from p in db.Projects
                                          select new
                                                    {
                                                        ProjectId = p.ProjectId
                                                    }
                                ProjectName = from p in db.Projects
                                          select new

                                                    {
                                                        ProjectName = p.ProjectName
                                                    }
                                Notes = a.Notes;
                            });
4

2 に答える 2

2

Notificationエンティティに へのナビゲーション プロパティがある場合は、次のProjectようにするだけです。

var notifications = 
    (from a in db.NotificationsLog
     let p = a.Project
     where a.CreatedBy == userID
     orderby a.CreatedDateTime ascending
     select new NotificationModel
     {
         id = a.id,
         ProjectId = p.Id,
         ProjectName = p.Name,
         Project = new ProjectModel
         {
             ProjectId = p.Id
             ProjectName = p.Name
             Notes = a.Notes;
         }
     });
于 2013-03-27T18:00:29.200 に答える
1
var notifications = from a in db.NotificationsLog
                    join p in db.Projects on a.ProjectId equals p.ProjectId
                    where a.CreatedBy == userID
                    select new NotificationModel
                            {
                                id = a.id,
                                ProjectId = p.ProjectId,
                                ProjectName = p.ProjectName,
                                Notes = a.Notes
                            };
于 2013-03-27T18:02:53.103 に答える