共用方式為


編譯器錯誤 CS1941

更新:2007 年 11 月

錯誤訊息

'clause' 子句中的一個運算式的型別不正確。'method' 的呼叫時型別推斷失敗。

查詢運算式中的型別推斷是從資料來源中的項目型別流動而來。

若要更正這個錯誤

  • 如果無法立即得知發生錯誤的原因,請仔細檢查查詢,並從資料來源往發生錯誤那點追蹤每個子句之結果的型別。

範例

因為要求 equals 運算子比較 int 與 string,所以下列程式碼會產生 CS1941。

// cs1941.cs
using System.Collections;
using System.Linq;
class Test
{
    static int Main()
    {
        var nums = new[] { 1, 2, 3, 4, 5, 6 };
        var words = new string[] { "lake", "mountain", "sky" };
        IEnumerable e = from n in nums
                        join w in words on n equals w // CS1941
                        select w;
        return 0;
    }
}

型別推斷失敗的方法就是在編譯時期轉譯查詢子句的方法。

請參閱

概念

LINQ 查詢運算式 (C# 程式設計手冊)

查詢作業中的型別關聯性 (LINQ)