C# 7.0 值元组编译错误?
C# 7.0 Value Tuple compile error?
当我尝试编译以下代码时:
var post = iPostService.GetAll().Select(x => (x.Title, x.Author));
我收到编译器错误:'An expression tree may not contain a tuple literal.'
所以我也试过这个:
var post = iPostService.GetAll().
Select(x => new ValueTuple<string, string>(x.Title, x.Author))
结果是运行时错误:'Cannot resolve method Void .ctor(System.String, System.String) because the declaring type of the method handle System.ValueTuple`2[T1,T2] is generic. Explicitly provide the declaring type to GetMethodFromHandle.'
我用谷歌搜索找到了这个问题的解决方案,但没有任何帮助。
非常感谢任何帮助。
谢谢
最后,我发现我的代码有什么问题:
- 我正在使用延迟执行,因此在执行构造函数时不会从数据库加载数据。
- 解决方法是在创建实例命令之前添加转换运算符。
希望它适用于您的代码。
对我有用,首先创建一个元组并将其转换为ValueTuple:
var post = iPostService.GetAll().
Select(x => new Tuple<string, string>(x.Title, x.Author).ToValueTuple())
当我尝试编译以下代码时:
var post = iPostService.GetAll().Select(x => (x.Title, x.Author));
我收到编译器错误:'An expression tree may not contain a tuple literal.'
所以我也试过这个:
var post = iPostService.GetAll().
Select(x => new ValueTuple<string, string>(x.Title, x.Author))
结果是运行时错误:'Cannot resolve method Void .ctor(System.String, System.String) because the declaring type of the method handle System.ValueTuple`2[T1,T2] is generic. Explicitly provide the declaring type to GetMethodFromHandle.'
我用谷歌搜索找到了这个问题的解决方案,但没有任何帮助。
非常感谢任何帮助。
谢谢
最后,我发现我的代码有什么问题:
- 我正在使用延迟执行,因此在执行构造函数时不会从数据库加载数据。
- 解决方法是在创建实例命令之前添加转换运算符。
希望它适用于您的代码。
对我有用,首先创建一个元组并将其转换为ValueTuple:
var post = iPostService.GetAll().
Select(x => new Tuple<string, string>(x.Title, x.Author).ToValueTuple())