2016-12-25 5 views
0

Zum Beispiel habe ich 2 Modell.MVC 5 wählen Sie aus 2 Modell linq Ausdruck

ASpnetUserRoles und ASPnetRoles

ich will ASPnetRoles.Name, ASPnetROles.ID wo ASPnetRoles.ID in ASPnetUserRoles auszuwählen.

ich nur wissen, wie in SQL

select * from modalA where modelA.id in(select modelB.id from modelB) 

Antwort

0

zu schreiben, wenn Sie "Lazy Loading" aktivieren, können Sie diese Linq-Abfrage verwenden:

using(var db = ..."context"..) 
{ 
    var q = db.AspNetUserRoles.where(c=>c.UserID = userIdVal) 
          .select(z=> new { RoleId = z.RoleId 
               ,userId = z.UserId 
               ,RoleName = z.AspNetRole.RoleName 
              }) 
          .toList(); 
} 
0

Das ist, was ich schließlich tat.

IEnumerable<IdentityRole> ro; 
     ro = (from p in haha join ur in aspNetUser.AspNetRoles on p.Id equals ur.Id select p); 
0

Hier ein generisches Beispiel Sie müssen eine Klasse (keine EF) erstellen und das Ergebnis speichern.

IQueryable<ResultClass> result=from t1 in db.Table1 
           join t2 in db.Table2 
           //Here the relation fields 
           on t1.IdTable1 equals t2.IdTable2 
           //Here where conditios and/or orderby 
           select new ResultClass() 
           { 
            Field1=t1.SomeField, 
            Field2=t2.SomeField, 
            //all need fields 
           } 

Verwenden Sie das Ergebnis

result.ToList()