コンパイラ エラー 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 };
    }
}

参照

参照

join 句 (C# リファレンス)