MVC搜索LINQ查询

时间:2014-03-18 20:29:14

标签: c# mysql sql linq

我有一个非常简单的查询

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

现在基本上我想搜索该查询以查看查询中是否有任何股票对象名称包含" a"

我有这个

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以按以下方式重新编写查询:

var query = (from s in db.Stocks.ToList()
             where !string.IsNullOrEmpty(searchModel.Name) ? s.Contains(searchModel.Name) : true
             select s).ToList(); 

新添加的一行表示:如果SearchModel.Name被填充,则使用它进行搜索,否则什么也不做

或者您可以保留代码,但在表名后添加.ToList()或在查询代码末尾添加远程.ToList(),以强制执行结果的数据类型