我要做的是缩小查询结果的范围,稍后我将使用该查询来进行数据绑定。我想获取所有在GRIDVIEW中使用的程序,并将它们从DROPPDLIST列表的数据源中删除(也就是说,用户不能选择创建和插入一个对象到与已经存在的相同程序ID的GRIDVIEW)中。
下面是一些代码:
var query = from goals in DataContext.Goals
select goals;
var query2 = (from goals in query.AsEnumerable()
select goals.ProgramId).ToList(); //List<long?>
var query3 = (from progs in DataContext.Programs
select progs.ProgramId).ToList(); //List<long>
var cgps = query3.Except(query2);
我在
var cgps = query3.Except(query2);
上看到这些错误:错误29“system.collections.generic.list”不包含“except”的定义,并且最佳扩展方法重载“system.linq.parallelEnumerable.except(system.linq.parallelQuery,system.collections.generic.IEnumerable)”具有一些无效参数C:…\shmeh\shmeh\shmeh\this.aspx.cs 24 226 project
错误30实例参数:无法从“system.collections.generic.list”转换为“system.linq.parallelquery”C:…\shmeh\shmeh\shmeh\this.aspx.cs 24 226项目
如果你知道如何有效地做我想做的事,任何帮助都将不胜感激!谢谢!
最佳答案
Except
要求序列是同一类型的。尝试将long
列表转换为long?
:
var query3 = (from progs in DataContext.Programs
select (long?)progs.ProgramId).ToList(); //List<long?>