的数据类型。
我有一个非常简单的查询
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();
}
原因是在第一个查询
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(),这将强制执行结果