2013-05-04 54 views
0

我的應用程序是使用Linq-to-Sql的asp.net MVC。我正嘗試使用以下來過濾視圖。c#使用where語句列表

WHERE (dbo.Client.Recstatus IS NULL) OR (dbo.Client.Recstatus = 0) 

它工作得很好,當我在SQL Server Management Studio中運行它,但我仍然看到在我的應用程序中的條目:

我已經使用已經添加了過濾器,以我的SQL Server視圖。

我想在我的倉庫再次過濾它使用:

List<vw_Client_info> searchResult = new List<vw_Client_info>().Where(c=> c.Recstatus != 1); 

Recstatussmallint

我收到以下錯誤:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'System.Collections.Generic.List'. An explicit conversion exists (are you missing a cast?)

我將不勝感激你的協助,謝謝提前。

回答

2

似乎忘記在最後使用ToList()方法。試試這個:

List<vw_Client_info> searchResult = 
    new List<vw_Client_info>().Where(c=> c.Recstatus != 1).ToList(); 
+0

非常感謝Hossein,我沒有聽錯。任何想法,爲什麼如果我在Sql中篩選了我的視圖,數據仍然顯示!再次感謝。 – hncl 2013-05-04 06:59:03

+0

@ user373721不知道我是否理解你的評論。 – 2013-05-04 07:17:15

+0

我想弄清楚,如果我有在SQL視圖中的過濾器,當我運行它;它會刪除所有等於1的條目。但是在我的MVC表中,這些等於1的輸入仍在顯示。謝謝 – hncl 2013-05-04 07:38:28

0

可枚舉的方法計有Where不返回一個列表,而是他們返回的IEnumerable

,所以你可以修改代碼以

IEnumerable<vw_Client_info> searchResult = 
      new List<vw_Client_info>().Where(c=> c.Recstatus != 1); 

或者

var searchResult = 
     new List<vw_Client_info>().Where(c=> c.Recstatus != 1); 

與上面相同(編譯器派生出你的類型)

或者

List<vw_Client_info> searchResult = 
     new List<vw_Client_info>().Where(c=> c.Recstatus != 1).ToList(); 
0

這是因爲你是返回從您選擇匿名類型和你試圖將其存儲在List<vw_Client_info>。投影總是創建匿名類型。 這樣你就可以在IEnumerable中存儲或者在尾部使用ToList()

2

兩個問題

  1. new List<vw_Client_info>()是新的列表沒有數據
  2. 你必須調用.ToList()在聲明的結尾

你可以嘗試像下面

using (YourDatacontext context= new YourDatacontext(connStr)) 
{ 
    List<vw_Client_info> searchResult = 
      context.vw_Client_infos.Where(c=> c.Recstatus != 1).ToList(); 
} 
+0

謝謝大家的好意和快速支持 – hncl 2013-05-04 07:16:40