login  Naam:   Wachtwoord: 
Registreer je!
 Forum

.net C# MVC - db

Offline Wijnand - 04/03/2009 09:46
Avatar van WijnandModerator Ik heb een query in mijn mvc project en dat is deze:

  1. Test newLid = (from t in db.tableTest where t.id == 2 select t).FirstOrDefault();


Nu krijg ik één resultaat terug.

Maar nu wil ik een hele lijst terug geven (overzicht) van bijvoorbeeld 10 rijen.

1. Hoe kan ik dat doen?
2. En is er een mogelijkheid om een LIMIT aan te geven (zodat er een navigatie gemaakt kan worden zonder dat de hele shit geladen wordt)?

6 antwoorden

Gesponsorde links
Offline Ontani - 04/03/2009 10:01
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
LIMIT binnen MSSQL noemt TOP k weet niet hoe ze dit in LINQ genoemd hebben.
Offline Wijnand - 04/03/2009 10:05
Avatar van Wijnand Moderator Ik heb voor vraag één het volgende 'al' bereikt:

  1. var newLid = from t in db.tableTest
  2. select t;
  3. ViewData["projecten"] = newLid.ToList();


En nu wil ik dus in de View deze gegevens ophalen en lussen. Hoe kan dat?
Offline Abbas - 04/03/2009 12:30 (laatste wijziging 04/03/2009 12:42)
Avatar van Abbas Gouden medaille

Crew .NET
In je Controller doe je nog:

  1. return View(ViewData["projecten"]);

En dit zet je dan in je View:

  1. <% foreach (Lid l in (IEnumerable)ViewData.Model)
  2. { %>
  3. <p><%= l.Naam %></p>
  4. <% } %>


Om op die LIMIT kwestie te komen. Wil je er maar 10 nemen bijvoorbeeld dan doe je:

  1. var newLid = (from t in db.tableTest select t).Take(10);

Stel dat je een navigatiesysteem wilt inbouwen, via een integer via URL ofzo, dan doe je het zo. Geef in je ActionResult een optionele parameter mee:

  1. public ActionResult Index(int? id)

In je Actionresult moet je dan controleren of je op de Index bent en/of er wel een meegegeven is:

  1. if (id == null)
  2. id = 1;
  3. int y = ((int)id - 1);

Als er geen Id is opgegeven wordt deze 1 en daarna doe je -1, vraag niet waarom maar ik dacht dat hij lastig deed als je die eerst op 0 zette. Daarna gebruik je die 'y' in je query:

  1. var newLid = (from t in db.tableTest select t).Skip((y * 20)).Take(10);
Offline Ontani - 04/03/2009 12:38 (laatste wijziging 04/03/2009 12:41)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
asp.net ineens?

titjes schreef:
Que? 
Offline Wijnand - 05/03/2009 09:17
Avatar van Wijnand Moderator Die limit heb ik nog niet geprobeerd, ga ik later doen.. maar die query die werkt!

Alleen een vraag, als je ViewData['projecten'] mee stuurt in de view dan werkt dat, maar wat moet je doen als je verschillende query's (en verschillende tabellen) mee stuurt?
Offline Abbas - 05/03/2009 15:03
Avatar van Abbas Gouden medaille

Crew .NET
Stel je hebt verschillende ViewData staan in je code:

  1. //List van het type Project en Klant maken
  2. protected IList<Project> projectList = new List<Project>();
  3. protected IList<Klant> klantList = new List<Klant>();
  4. //Lijst vullen met resultaten
  5. projectList = (from p in db.tableTest select p).ToList();
  6. klantList = (from k in db.tableTest select k).ToList();
  7. ViewData["Projecten"] = projectList;
  8. ViewData["Klanten"] = klantList;
  9. //gewoon lege View returnen:
  10. return View();

Nu zit in die ViewData een lijst van respectievelijk projecten en klanten. In je View doe je dan zo:

  1. <% foreach (Project p in (List<Project>)ViewData["Projecten"])
  2. { %>
  3. <strong><%= p.Naam %></strong>
  4. <% } %>
  5.  
  6. <% foreach (Klant k in (List<Klant>)ViewData["Klant"])
  7. { %>
  8. <strong><%= k.Naam %></strong>
  9. <% } %>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.194s