編譯器錯誤 CS1938
更新:2007 年 11 月
錯誤訊息
名稱 'name' 不在 'equals' 右邊的範圍內。請考慮交換 'equals' 任一邊的運算式。
equals 關鍵字是在 join 子句中使用的特殊運算子,用來判斷兩個運算式是否相等。左邊來源序列的範圍變數是在 equals 左邊的範圍內,而右邊來源的範圍變數只在 equals 左邊的範圍內。在下列程式碼範例中,您可以使用 IntelliSense 進行實驗來確認這種狀況。
若要更正這個錯誤
- 交換這兩個範圍變數的位置,如下列範例中的命令列所示:
範例
下列程式碼會產生 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 };
}
}