我的应用程序是使用Linq-to-Sql的asp.net MVC。我正在尝试使用以下内容过滤视图。
我已经使用以下方法将过滤器添加到我的SQL Server视图中:
WHERE (dbo.Client.Recstatus IS NULL) OR (dbo.Client.Recstatus = 0)
当我在SQL Server Management Studio中运行它时,它运行良好,但我仍然可以看到我的应用程序中的条目。
我尝试使用以下方法在我的存储库中再次过滤它:
List<vw_Client_info> searchResult = new List<vw_Client_info>().Where(c=> c.Recstatus != 1);
Recstatus
是smallint
我收到以下错误:
无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否错过了演员?)
非常感谢您的协助,谢谢您。
答案 0 :(得分:2)
似乎你忘记了最后使用ToList()
方法。试试这个:
List<vw_Client_info> searchResult =
new List<vw_Client_info>().Where(c=> c.Recstatus != 1).ToList();
答案 1 :(得分:2)
两个问题
new List<vw_Client_info>()
是新列表,没有数据.ToList()
您可以尝试以下内容
using (YourDatacontext context= new YourDatacontext(connStr))
{
List<vw_Client_info> searchResult =
context.vw_Client_infos.Where(c=> c.Recstatus != 1).ToList();
}
答案 2 :(得分:0)
包含Where
的可枚举方法不返回List,而是返回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();
答案 3 :(得分:0)
这是因为您从Select中返回了一个匿名类型,并且您正试图将其存储在List<vw_Client_info>
中。投影总是创建匿名类型。
这样你就可以在IEnumerable
存储或在尾部使用ToList()
。