在LINQ中键入转换错误

时间:2013-04-09 15:33:03

标签: sql linq stored-procedures

我正在尝试仅使用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。在存储过程中,两个值都被捕获在同一个变量中,这就是我在同一变量中需要它们的原因。那么在这种情况下可以吗?

1 个答案:

答案 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);
}