实体框架Datagridview过滤器
本文关键字:过滤器 Datagridview 框架 实体 | 更新日期: 2023-09-27 18:02:32
我是c#开发新手,有一些问题。我希望你能帮忙。
我有两个实体相关的多对多-电影和类型。我需要在一个datagridView中显示所有的电影。types包含在listboxstyles中选择的类型。
我试试这个代码:
moviesDBEntities myContext = new moviesDBEntities();
var myQuery = from movie in myContext.Movies
where movie.genre.Contains(ListBoxGenres.SelectedItem)
select movie;
dgvMovies.Datasource = myQuery.ToList();
问题是收到如下的异常错误:
"无法创建'System.Object'类型的常数值。"在此上下文中只支持基本类型(如Int32, String和Guid)。"
谢谢你的帮助
见这里
在查询中引用非标量变量(如实体)是不受支持的。当这样的查询执行时,一个NotSupportedException抛出异常,并提示"无法创建EntityType类型的常数值。只有基本类型(例如在此上下文中支持Int32, String和Guid')。"
尝试重新措辞你的查询使用标量变量(这里我假设类型实体有PK的Id):
var myQuery = from movie in myContext.Movies
where movie.genre.Any(g=>g.Id == ((Genre)listBox.SelectedItem).Id)
select movie;
使用ListBoxGenres.SelectedItem
的属性,例如:ListBoxGenres.SelectedItem.Value
var myQuery = from movie in myContext.Movies
where movie.genre.Contains(ListBoxGenres.SelectedItem.Value)
select movie;