2011-08-02 9 views
0

私は、ユーザーとのUserInfo
モデルクラスに参加し、テーブルの結果を設定する方法

  • UsersInfo
    ユーザーID
    ユーザー名
    メール
    パスワード
    LastLoginDate
  • ユーザー
    ユーザーIDのような2つのテーブルを持っています
    ファーストネーム

    のPhoneNumber私は結合を使用してデータベースからデータを取得したいと思い

。私は上記テーブルの両方の結果を得るために次のクエリを書いています。

public ViewResult Index() 
     { 
      List<UserDetailModel> UsersCompleteDetails = (from u in db.Users 
                  join l in db.UsersInfoes on u.UserId equals l.UserId 
                  select new { u.UserId, u.UserName, u.Email, u.Password, u.LastLoginDate, l.FirstName, l.LastName, l.PhoneNumber }).ToList<UserDetailModel>; 
      return View(UsersCompleteDetails); 
     } 

と、次の

**public class UserDetailModel 
{ 
    //Following details are comes from UsersInfo Table 
    public string UserId { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
    public string Password { get; set; } 
    public DateTime LastLoginDate { get; set; } 
    //Following details are comes from User Table 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string PhoneNumber { get; set; } 
}** 

カスタムクラスのモデルですが、私は、クエリ結果でカスタムクラスをマップすることができる方法についてのアイデアを持っていませんか?今すぐ次のメッセージを表示していますエラー:

メソッドグループ 'ToList'を非代理人タイプ 'System.Collections.Generic.List'に変換できません。メソッドを呼び出すつもりでしたか?

答えて

1

ToListToList<...>())の呼び出しの後にカッコが付いていないために表示されるエラーです。しかし、匿名型のリストを型付きリストに変換しようとしているという点で大きな問題があります。

AutoMapperのようにエンティティをモデルオブジェクトにマッピングするのに役立つライブラリをいくつか使用できますが、モデルオブジェクトとデータオブジェクト自体に変換メソッドを作成することも、自動プロパティ初期化を使用することもできますあなたの匿名型の世代に似ています。

以下の例は、あなたのケースではうまくいくはずですが、かなりフォーマットされていませんが、その点を理解する必要があります。

public ViewResult Index() 
{ 
    List<UserDetailModel> UsersCompleteDetails = (from u in db.Users 
                join l in db.UsersInfoes on u.UserId equals l.UserId into userInfo 
                from info in userInfo.DefaultIfEmpty() 
                select new UserDetailModel() { 
     UserId = u.UserId, 
     UserName = u.UserName, 
     Email = u.Email, 
     Password = u.Password, 
     LastLoginDate = u.LastLoginDate, 
     FirstName = l.FirstName, 
     LastName = l.LastName, 
     PhoneNumber = l.PhoneNumber 
    }).ToList(); 

    return View(UsersCompleteDetails); 
} 
+0

Quintin Robinson:これは受け入れられた解決策であり、解決策の助けを借りて問題を解決しました。迅速なソリューションを提供してくれてありがとう。 **レコードを持つUsersテーブルのみの場合、結合クエリを変更する方法は1つの質問がありますか?** – imdadhusen

+0

@imdadhusen左結合を説明するために私の答えの例を変更しました。関連する 'UserInfo'レコードです。 –

関連する問題