2012-04-07 6 views
1

Ich muss zwei/drei unabhängige Abfragen durchführen und in dasselbe ViewModel laden und an die View übergeben.mvc3 und linq - Erstellen eines ViewModels

hier ist, was ich tue, aber es tut auch kompilieren, nehmen Sie bitte einen Blick und lassen Sie mich wissen, was ich tue, falsch .. Danke

UserViewModel Klasse hat zwei Parameter, Titel, Option

z.B

UserViewModel user= new UserViewModel(); 

    var model = (from a in db.Table1 
    where string.Equals(a.username, "bob") 
    select user 
    { user.Title = a.Title, 
     user.option = 1 
    }); 

zweite Abfrage

model = (from b in db.Table2 
      where string.Equals(b.username, "bob") 
      select user 
      { 
       user.Title= b.Title, 
       user.option= 2 
      }); 

var list = model.ToList(); 
return View("List",list); 

Dies ist einfache Abfragen und ich weiß, dass ich sie jetzt in 1 Abfrage setzen kann, aber in der Zukunft wird es sein, völlig unabhängig, und ich muß wissen, wie zwei zu tun/drei Abfragen und fügen sie in ein Viewmodel ein. danke

Antwort

0
var user = db.Table1 
    .Where(m => m.username == "bob") 
    .Select(x => new UserViewModel 
     { 
      Title = x.Title, 
      Option = 1 
     }) 
     .Union(
      db.Table2 
     .Where(m => m.username == "bob") 
     .Select(x => new UserViewModel 
     { 
      Title = x.Title, 
      option = 2 
     }) 
    ).ToList(); 
+0

vielen dank! Könntest du mir bitte auch sagen wie würdest du 2 getrennte Modelle zu einer Ansicht übergeben (wenn die Modelle anders wären)? und wenn Sie wissen, ob es irgendwelche Nachteile gibt, es zu tun. – Ben

+1

Sie können ein Modell als "Ansichtsmodell" und das andere in einem ViewBag übergeben. Es wäre jedoch besser, eine neue Klasse (ViewModel) mit allen Klassen zu erstellen, die Sie in Ihrer Ansicht benötigen, und diese Klasse an Ihre Ansicht zu übergeben. –

Verwandte Themen