我正在尝试仅使用LinqPad将存储的Proc转换为LINQ。我在Linq中有以下代码
var myVar = (from st in Student
where st.name == "abcd"
select st).Take(10);
if (myVar.Any())
{
// some statements
}
else
{
myVar = (from emp in Employee
where emp.name == "abcd"
select emp).Take(10);
}
但它在else块的选择行中给出了以下错误
Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'System.Linq.IQueryable<AnonymousType#2>'
谁能知道发生了什么?怎么解决?如何在Linq中显式转换类型?
两个表中的列都不同。我没有使用任何框架,如实体框架等。我只是有应用程序的数据库,我正在尝试将所有存储过程转换为LINQ。在存储过程中,两个值都被捕获在同一个变量中,这就是我在同一变量中需要它们的原因。那么在这种情况下可以吗?
答案 0 :(得分:3)
您查询返回不同的对象,因此您无法将它们分配给同一个变量。
您可以指定您希望从这两个查询中获取哪些属性,如果它们相同则可以使用:
var myVar = (from st in Student
where st.name == "abcd"
select new
{
st.name,
st.age
}).Take(10);
if (myVar.Any())
{
// some statements
}
else
{
myVar = (from emp in Employee
where emp.name == "abcd"
select new
{
emp.name,
emp.age
}).Take(10);
}