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

Ric*_*d77 5 c# linq

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

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

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

谢谢你的帮助

Asa*_*din 8

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

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

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