无法确定条件表达式的类型,因为'lambda expression'和'lambda expression'之间没有隐式转换

时间:2015-10-27 19:26:08

标签: c# linq

我收集了一些笔记。根据请求这些笔记的UI,我想排除某些类别。这只是一个例子。如果项目Notes弹出窗口请求备注,我应该排除集合备注。

Func<Note, bool> excludeCollectionCategory = (ui == UIRequestor.ProjectNotes) 
            ? x => x.NoteCategory != "Collections"
            : x => true; //-- error: cannot convert lambda to lambda

我收到以下错误:Type of conditional expression cannot be determined because there is no implicit conversion between 'lambda expression' and 'lambda expression'

感谢您的帮助

1 个答案:

答案 0 :(得分:7)

编译器不会推断lambda表达式的委托类型。您需要在第一个三元子句中使用强制转换来指定委托类型:

var excludeCollectionCategory = (ui == UIRequestor.ProjectNotes) 
    ? (Func<Note, bool>)(x => x.NoteCategory != "Collections")
    : x => true;

一线希望是你可以使用var而不必指定变量的类型,所以它不是那么冗长。