C#7.0 Value Tuple编译错误?

时间:2018-01-07 14:23:30

标签: asp.net linq-to-entities expression-trees c#-7.0 valuetuple

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

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

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

所以我也尝试了这个:

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

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

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

任何帮助都非常感激。

由于

2 个答案:

答案 0 :(得分:3)

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

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

希望它适用于您的代码。

答案 1 :(得分:1)

它对我有用,首先创建一个元组,然后将其转换为ValueTuple:

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