首先,我的代码引用了System.ValueTuple
。
我有一个元组列表:
List<(string, string)> theme
,并且我想一次扫描将元组的第一个字符串转换为DateTime,因此我试图创建一个与List.ConvertAll
一起使用的Converter。
这不会给出错误:
var conv = new Converter<string,DateTime>(x => DateTime.ParseExact(x, "yyyy-MM-dd", null));
但是显然这不是我所需要的。当我尝试简单地使用元组作为lambda的输入/输出时,出现错误:
(委托'转换器'<(字符串,字符串),(日期时间,字符串)>'不带两个参数)
var conv = new Converter<(string,string),(DateTime,string)>
( (x,y) => (DateTime.ParseExact(x, "yyyy-MM-dd", null),y) );
但是我没有传递两个参数。还是我??? 感谢您的帮助。
答案 0 :(得分:3)
我认为这应该有效吗?
var conv = new Converter<(string, string), (DateTime, string)>(x => (DateTime.ParseExact(x.Item1, "yyyy-MM-dd", null), x.Item2));
答案 1 :(得分:2)
您的第二次尝试非常接近。在以下语句中,(x,y)
表示将传递两个参数:
new Converter<(string,string),(DateTime,string)>((x,y) => (DateTime.ParseExact(x, "yyyy-MM-dd", null),y));
但是它将收到的Tuple
是一个参数,因此该语句应为:
new Converter<(string,string),(DateTime,string)>(x => (DateTime.ParseExact(x.Item1, "yyyy-MM-dd", null),x.Item2));