MVC搜索LINQ查询

本文关键字:查询 LINQ 搜索 MVC | 更新日期: 2023-09-27 17:50:54

我有一个非常简单的查询

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

MVC搜索LINQ查询

原因是在第一个查询

  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

try

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

您可以按照如下方式重写查询:

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

新添加的行表示:Name被填满,然后使用它搜索,否则什么都不做

或者您可以保持代码不变,但是在表名之后添加.ToList(),或者在查询代码的末尾添加.ToList(),这将强制执行结果

的数据类型。