2013-09-24 16 views
10

aynı ada sahip birden özelliklere sahip olamaz ancak aynı adla Varlık FramwrokAnonim tip I varlık çerçevesi aracılığıyla GRIDVIEW bağlamak istiyorum

ile birden özelliklere sahip olamaz

Anonim tipi gibi- hata atar

İşte yöntemim.

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

Burada hatayı gösterir. usr.UserId.

cevap

18

Doğrudan sorun, anonim tip new { m.UserId, u.UserId }: aynı adla iki kez. Açık mülk adları vererek bunu düzeltebilirsiniz, örneğin: new { u1 = m.UserId, u2 = u.UserId }.

Ama

sonraki konu son düzeltme bu yüzden katılmak tanımlamak hem anonim türleri, aynı özellik adlarını olmayacağını olacaktır:

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 yanıt doğrudur. Sadece daha basit bir çözüm göstermek istiyorum - yalnızca ilk UserId özelliğine bir ad verin:

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

Mümkün. Tek şey, kodun daha az kendini açıklayıcı hale getirmesidir, çünkü ilk UserId 'MembershipUserID' ile ilgisi olmayabilir. İki "anonim" ismi kullanmak, özelliklerin yalnızca yer tutucu olduğunu gösterir. –

+0

@GertArnold ilk kullanım kimliğinin üyelikle bir ilgisi var :) bu aspnet_Membership tablosundan id. Ayrıca, "u1" in "MembershipUserID" den daha az açıklayıcı olduğunu düşünüyorum. Ben de cevabınızı savundu böylece de tamamen doğru ve hata nedenini açıklıyor :) –

+1

Elbette, hiçbir endişe! Aynı özellik kodlarının uygulandığını göstermek için kodumu beğendim. Belki sadece bir tat meselesi. –