无法在元组列表上使用转换器

时间:2019-06-25 08:42:13

标签: c# tuples converters

首先,我的代码引用了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) );

但是我没有传递两个参数。还是我??? 感谢您的帮助。

2 个答案:

答案 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));