2016-09-24 80 views
-2

我被困在一個我似乎無法解決的問題上。我想要做的是使用他們的姓氏在數據庫上排序lambda。在MVC5中使用LINQ與C#

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

數據庫值:

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

與上述方法它是好的,以顯示所有僱員的列表數據庫,但在我的控制器或方法中,我使用lamda?如果你在manager.cs中創建一個method()並使用它中的lambdas來返回一個對象,我基本上就會停下來,你怎麼稱它爲索引視圖?正如我想要的頁面加載的姓氏進行排序。任何幫助表示讚賞。

+0

'EmployeeGetAll()排序依據(X => x.LastName)' –

+0

啊,謝謝。另一個問題是,如果我現在只想顯示其中一列有特定值的員工,那麼當用戶點擊頂部的一個指向store9的鏈接時,他們的商店#(例如/「9」)說,如何這是在同一個索引()中完成的?我似乎不明白上面的一個Index()方法如何執行多個lambda返回不同的項目? – 13design

+0

對不起,有點不清楚 – 13design

回答

0

我想你應該在數據庫級進行排序,像這樣:

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

說我還想要一個EmployeeGetAllCana​​dians()函數,通過countryID過濾員工。我將不得不在頂部添加一個顯示爲「加拿大僱員」的鏈接....我如何去做這件事?例如:public ActionResult Index() { return View(m.EmployeeGetAll());我不確定如何在索引()視圖 – 13design

+0

中返回2個不同的結果。 } – 13design

+0

您必須將countryId傳遞給EmplyeeGetAll,例如EmployeeGetAll(int?countryId){var all = ds.Employees.Where(e =>!countryId.HasValue || countryId.Value == e.CountryId).OrderBy(e = > e.LastName);} –