2016-09-24 5 views
-2

Ich stecke auf ein Problem, das ich nicht zu lösen scheinen. Was ich tun möchte, ist ein Sort Lambda in einer Datenbank nach ihren Nachnamen.Verwenden von LINQ mit C# in MVC5

EmployeesController:

public ActionResult Index() 
    { 
     return View(m.EmployeeGetAll()); 
    } 

manager.cs:

public IEnumerable<EmployeeBase> EmployeeGetAll() 
    { 
     //use automapper to map objects, source to target 
     return mapper.Map<IEnumerable<Employee>, IEnumerable<EmployeeBase>>(ds.Employees); 
    } 

Datenbank Wert:

[Required] 
    [StringLength(20)] 
    public string LastName { get; set; } 

mit dem oben genannten Verfahren ist es in Ordnung, eine Liste aller Mitarbeiter zeigen in die db, aber wo in meinem Controller oder Methoden verwende ich die Lamda? Ich bin im Grunde fest, wenn Sie eine Methode() in der manager.cs und verwenden Sie Lambdas darin, um ein Objekt zurückzugeben, wie nennst du das für die Indexansicht? Wie ich will, wenn die Seite nach den letzten Namen sortiert wird. Jede Hilfe wird geschätzt.

+0

'EmployeeGetAll() SortiertNach (x => x.LastName)' –

+0

ah, danke.. Eine andere Frage ... Wenn ich jetzt nur Mitarbeiter mit bestimmten Werten in einer ihrer Spalten anzeigen möchte, sagen Sie nach ihrem Geschäft # (dh/"9"), wenn ein Benutzer oben auf einen Link klickt, der store9 sagt, wie würde Dies wird in demselben Index() gemacht? Ich verstehe anscheinend nicht, wie eine Index() -Methode wie oben mehrere Lambdas ausführt, die verschiedene Elemente zurückgeben. – 13design

+0

Entschuldigung dafür, ein wenig unklar zu sein – 13design

Antwort

0

Ich glaube, Sie in Datenbank-Ebene sortieren soll, wie folgt aus:

public IEnumerable<EmployeeBase> EmployeeGetAll() 
    { 
     var all=ds.Employees.OrderBy(e=>e.LastName); 
     //use automapper to map objects, source to target 
    return mapper.Map<IEnumerable<Employee>, IEnumerable<EmployeeBase>>(all); 
    } 
+0

sagen, ich wollte auch eine EmployeeGetAllCanadians() -Funktion, die Mitarbeiter nach countryID gefiltert. Ich müsste einen Link oben als "kanadische Angestellte" hinzufügen .... wie würde ich das machen? Ich bin mir nicht sicher, wie 2 verschiedene Ergebnisse in einem Index() zurückgegeben werden. View – 13design

+0

Beispiel: public ActionResult Index() { return View (m.EmployeeGetAll()); } – 13design

+0

Sie müssen countryId an EmplyeeGetAll wie EmployeeGetAll (int? CountryId) {var all = ds.Mitarbeiter.Wo (e =>! CountryId.HasValue || countryId.Value == e.CountryId) .OrderBy (e = > e.LastName);} –