2014-03-18 194 views
-1

我有一個非常簡單的查詢MVC搜索LINQ查詢

var query = (from s in db.Stocks 
      select s).ToList(); 

現在基本上我想要然後搜索該查詢,看看是否有股票的查詢對象名稱中包含「一」

我有這個

if(!string.IsNullOrEmpty(searchModel.Name)) 
{ 
    query = query.Where(x => x.Name.Contains(searchModel.Name)); 
} 

但我得到這個錯誤

Cannot implicity convert type "system.collections.generic.ienumerable<etc etc> to system.collections.generic.list 

如何搜索我的查詢結果?

其確定我有答案 我只需要.ToList添加到我的查詢語句的結束,像這樣

if(!string.IsNullOrEmpty(searchModel.Name)) 
{ 
    query = query.Where(x => x.Name.Contains(searchModel.Name)).ToList(); 
} 
+1

是否知道將整個表加載到內存中不是一種好的做法?該數據庫比LINQ更好地搜索 – ryudice

+0

我意識到 – Canvas

回答

1

的原因是因爲在第一個查詢

var query = (from s in db.Stocks 
      select s).ToList(); 

您已經將變量查詢的數據類型修改爲List(toList())。現在,當您使用Where再次查詢它時,它將返回IEnumerable並且不能分配給類型List。你可以在一行中做到這一點,如下所示

var query = from s in db.Stocks 
       where s.contains(searchModel.Name) 
       select s 
0

嘗試

query = query.Where(x => x.Name.Contains(searchModel.Name)).ToList();