20

当我尝试编译以下代码时:

var post = iPostService.GetAll().Select(x => (x.Title, x.Author));

我收到编译器错误:“表达式树可能不包含元组文字。”

所以我也试过这个:

var post = iPostService.GetAll().
                    Select(x => new ValueTuple<string, string>(x.Title, x.Author))

结果是运行时错误:'Cannot resolve method Void .ctor(System.String, System.String) 因为方法句柄 System.ValueTuple`2[T1,T2] 的声明类型是通用的。向 GetMethodFromHandle 显式提供声明类型。

我用谷歌搜索了这个问题的解决方案,但没有什么真正有用的。

任何帮助都非常感谢。

谢谢

4

2 回答 2

16

它对我有用,首先创建一个元组并将其转换为 ValueTuple:</p>

var post = iPostService.GetAll().
           Select(x => new Tuple<string, string>(x.Title, x.Author).ToValueTuple())
于 2018-11-07T02:15:25.010 回答
13

最后,我发现我的代码有什么问题:

  • 我正在使用延迟执行,因此在执行构造函数时不会从数据库加载数据。
  • 解决方案是在创建实例命令之前添加转换运算符。

希望它适用于您的代码。

于 2018-01-07T18:34:05.930 回答