2014-03-19 51 views
0

我有一個表與自行車(山地自行車,旅遊自行車,公路自行車,...)Sub-Categories和我創建了一列isSelectedBoolean數據類型。我想在isSelected = true設置數據庫,每個Sub-Categories匹配它將顯示在主頁上,反之亦然。如何查詢與布爾使用LINQ

IQueryable<ProductSubcategory> list = null; 

if (Id == null) 
{ 
    list = BikesDB.ProductSubcategories; 
} 
else 
{ 
    int id = Id.Value; 
    list = BikesDB.ProductSubcategories.Where(m => m.ProductSubcategoryID == id 
                && m.NameofBike == Name 
                && m.isSelected == true); 
} 

var bikes = list.AsEnumerable().Select(
      p => new Bike { Id = p.ProductSubcategoryID, Name = p.NameofBike }); 

var viewModel = new CategoriesIndexViewModel 
       { 
        NumberOfModel = bikes.Count(), 
        NameofBike = bikes.Select(b=>b.Name).ToList(), 
        Bikes = bikes.ToList() 
       }; 

return this.View(viewModel); 
+3

你有什麼問題? –

+0

例如,當我點擊'Mountain Bikes'的'false'時,它仍然顯示在Web Application的主頁上。當我在數據庫中設置「false」時,如何消失'Mountain Bikes'? –

+1

你的意思是:'m.isSelected == true' – johnb003

回答

1

您確定isSelected是實際設置的嗎?我認爲你的linq表達看起來很好。它應該已經正確地只選擇isSelected == true的項目。

在查詢完成之前,我會在調試器中查看您的列表,並確保它具有您的想法。

或者您正在運行第一個分支:if (Id == null)並且您的列表未被isSelected條件過濾。

+0

它仍然顯示完整的項目不僅選擇項目'isSelected == true'。我不知道我在哪裏錯了這些代碼! –

+0

你甚至在數據庫中改變了'isSelected'的值嗎? (甚至不應該這樣做,這是可怕的設計) –

+0

不,我不會改變它@JeroenVannevel –