コンパイラ エラー CS1938
更新 : 2007 年 11 月
エラー メッセージ
名前 '名前' は 'equals' の右辺のスコープにありません。'equals' の両辺の式を交換してみてください。
equals キーワード は、2 つの式が等しいかどうかを決定するために join 句で使用される特別な演算子です。左辺のソース シーケンスの範囲変数は、equals の左辺のスコープにあります。右辺のソース シーケンスの範囲変数は、equals の左辺のスコープにしかありません。これは、次のコード例の IntelliSense を使用して試すことによって確認できます。
このエラーを解決するには
- 次の例のコメント行に示すように、2 つの範囲変数の位置を交換します。
使用例
次のコードは CS1938 を生成します。
// cs1938.cs
using System.Linq;
class Test
{
static void Main()
{
int[] sourceA = { 1, 2, 3, 4, 5 };
int[] sourceB = { 3, 4, 5, 6, 7 };
var query = from a in sourceA
join b in sourceB on b equals a // CS1938
// Try the following line instead.
// join b in sourceB on a equals b
select new { a, b };
}
}