【发布时间】:2012-06-17 16:43:39
【问题描述】:
这个查询没问题,
select *
from Materia
where
Cursar_Cursada=0
and idmateria NOT IN (
select IdMateria
from UsuarioMateria
where IdUsuario=11
)
or Cursar_Cursada in (
select Materia.Codigo_Materia
from UsuarioMateria join Materia on UsuarioMateria.IdMateria = Materia.IdMateria
)
当我尝试为相同目的创建 LINQ 时,我没有得到预期的结果。
from t in obj.Materias
where
t.Cursar_Cursada == 0 &&
!(from t0 in obj.UsuarioMaterias
where
t0.IdUsuario == 11
select new
{
t0.IdMateria
}).Contains(new { t.IdMateria }) ||
(from t0 in obj.UsuarioMaterias
join t1 in obj.Materias on t0.IdMateria equals IdMateria
select new
{
t1.Codigo_Materia
}).Contains(new { t.Cursar_Cursada }) // <- error here
select new
{
t.IdMateria,
t.Nombre,
t.Cuatrimestre,
t.Contenido,
t.Cursar_Cursada,
t.Cursar_Aprobada,
t.Rendir_Aprobada,
t.Codigo_Materia
};
错误出现在.Contains(new { t.Cursar_Cursada }) 的行上,它说:
方法
'System.Linq.Enumerable.Contains<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)'的类型参数无法从用法中推断出来。尝试明确指定类型参数。
【问题讨论】:
-
任何帮助将不胜感激!
-
重新格式化以便更容易阅读您的代码
-
你可以试试 .Contains(t.Cursar_Cursada) 吗?
-
好的,谢谢。是的,我试过了,但错误仍然是一样的
-
成功了吗?如果是这样,我会把它作为答案发布。