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 に変換しようとしています。Stored Proc では、両方の値が同じ変数に含まれているため、同じ変数に値が必要です。それで、このシナリオでそれは可能ですか?

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 に答える