C# 加入字典<;int,string>;和列表<;MyClass>;错误(无法从用法推断方法的类型参数)
我正试图加入C# 加入字典<;int,string>;和列表<;MyClass>;错误(无法从用法推断方法的类型参数),c#,list,join,dictionary,inferred-type,C#,List,Join,Dictionary,Inferred Type,我正试图加入字典和列表,但它抛出了一个错误 “无法从用法推断方法的类型参数” 但在我看来,所有的论点都有完美的定义 class Row { public string name { get; set; } public string[] data { get; set; } } Dictionary<int, string> devices = new Dictionary<int,string>(); List<Row> r
字典
和列表
,但它抛出了一个错误
“无法从用法推断方法的类型参数”
但在我看来,所有的论点都有完美的定义
class Row
{
public string name { get; set; }
public string[] data { get; set; }
}
Dictionary<int, string> devices = new Dictionary<int,string>();
List<Row> rows = new List<Row>();
rows = rows.Join(devices, row => row.data[0], device => device.Key, (row, device) => { row.data[1] = device.Value; return row; }).ToList();
类行
{
公共字符串名称{get;set;}
公共字符串[]数据{get;set;}
}
字典设备=新字典();
列表行=新列表();
rows=rows.Join(设备,row=>row.data[0],设备=>device.Key,(row,device)=>{row.data[1]=device.Value;返回row;}).ToList();
行
是行
,设备
是对
,设备。键
是int
,设备。值
是k。有什么问题?我知道这一定是一件愚蠢的事情,但我一直被这个错误困扰着。行。数据[0]
是字符串,但设备。键是整数,所以键类型不匹配。行。数据[0]
是字符串,但设备。键是整数,因此,键类型不匹配。出现此错误是因为device=>device.key
是一个int
,其中as行。数据[0]
是一个字符串。它们都是泛型TKey
,需要保持一致。可以通过在device.Key
上调用ToString()
来修复此问题
rows = rows.Join(devices, row => row.data[0], device => device.Key.ToString(), (row, device) => { row.data[1] = device.Value; return row; }).ToList();
出现此错误是因为device=>device.Key
是int
其中as行。data[0]
是字符串。它们都是泛型TKey
,需要保持一致。可以通过在device.Key
上调用ToString()
来修复此问题
rows = rows.Join(devices, row => row.data[0], device => device.Key.ToString(), (row, device) => { row.data[1] = device.Value; return row; }).ToList();
真是一件蠢事。我需要将row.data[0]转换为int convert.ToInt32(row.data[0]),即使编译器可以推断出类型参数(或者在您的例子中,它不能),如果您不确定发生了什么,也可以将它们写下来:rows.Join(…),尽管VS抱怨它无法推断类型参数,问题不在于推断类型参数,而是连接需要有相同的类型参数,它不够聪明,无法将int转换为string或viceversa。我写下了类型参数,但什么也没做……真是一件愚蠢的事情。我需要将row.data[0]转换为int convert.ToInt32(row.data[0]),即使编译器可以推断出类型参数(或者在您的例子中,它不能),如果您不确定发生了什么,也可以将它们写下来:rows.Join(…),尽管VS抱怨它无法推断类型参数,问题不在于推断类型参数,而是连接需要有相同的类型参数,它不够聪明,无法将int转换为string或viceversa。我写下了类型参数,但没有得到任何结果。。。