2013-09-24 8 views
10

同じ名前を持つ複数のプロパティを持つことはできませんが、それは同じ名前のエンティティFramwrok匿名型は、私は、エンティティフレームワークを通じてGridViewコントロールをバインドしたい

で複数のプロパティを持つことはできません

匿名型like-エラー をスローします

私の方法です。

public void UserList(GridView grdUserList) 
{ 
    using (TreDbEntities context = new TreDbEntities()) 
    { 

     var query =(from m in context.aspnet_Membership 
        from u in context.aspnet_Users 
        join usr in context.Users 
        on new { m.UserId, u.UserId } 
        equals new { usr.MembershipUserID, usr.UserId } 
        into UserDetails 
        from usr in UserDetails 
        select new { 
         CreationDate = m.CreateDate, 
         email = m.Email, 
         UserName = u.LoweredUserName, 
         Name = usr.FirstName + usr.LastNameLastName, 
         Active=usr.IsActive 
        }).ToList(); 
    } 
} 

ここにエラーが表示されます。 usr.UserId。

答えて

18

直接の問題は、匿名のタイプnew { m.UserId, u.UserId }にあります。同じ名前が2回あります。たとえば、new { u1 = m.UserId, u2 = u.UserId }のように、明示的なプロパティ名を付けることで修正できます。

しかし

、次の問題は、最終的な修正プログラムは、このですので、参加定義し、両方の匿名型は、同じプロパティ名を持っていないということになります。

public void UserList(GridView grdUserList) 
{ 
    using (TreDbEntities context = new TreDbEntities()) 
    { 
     var query =(from m in context.aspnet_Membership 
        from u in context.aspnet_Users 
        join usr in context.Users 
        on new { u1 = m.UserId, u2 = u.UserId } 
        equals new { u1 = usr.MembershipUserID, u2 = usr.UserId } 
        into UserDetails 
        from usr in UserDetails 
        select new { CreationDate = m.CreateDate, 
           email = m.Email, 
           UserName = u.LoweredUserName, 
           Name = usr.FirstName + " " + usr.LastName, 
           Active = usr.IsActive 
           } 
        ).ToList(); 
    } 
} 
4

@Gertの答えが正解です。単純なソリューションを表示したいだけです。最初のUserIdプロパティにのみ名前を付けてください。

on new { MembershipUserID = m.UserId, u.UserId } 
+0

可能です。唯一のことは、最初のUserIdが 'MembershipUserID'と何の関係もないので、コードを自明でなくすることです。 2つの「匿名」名前を使用すると、プロパティは単なるプレースホルダになります。 –

+0

@GertArnoldの最初の使用IDはメンバーシップと関係がある:) aspnet_MembershipテーブルのIDです。また、 'u1'は' MembershipUserID'よりも自明ではないと思います。私はあなたの答えをupvotedしたがって、それはまた、完全に正確であり、それはエラーの理由を説明します:) –

+1

確かに、全くの心配はありません!同じプロパティ名が適用されていることを示すために自分のコードが好きです。たぶん味の問題です。 –

関連する問題