编译器错误 CS1941
更新:2007 年 11 月
错误消息
“clause”子句中一个表达式的类型不正确。类型推理在对“method”的调用中失败。
查询表达式中的类型推理源于数据源中的元素类型。
更正此错误
- 如果发生此错误的原因不十分明显,请仔细检查查询,并跟踪从数据源到错误发生点的每个子句的结果的类型。
示例
下面的代码生成 CS1941,因为 equals 运算符被要求对 int 和 string 进行比较。
// 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;
}
}
发生类型推理失败的方法是查询子句在编译时转换为的方法。