1

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

4

1 回答 1

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);
}
于 2013-04-09T15:35:34.350 回答