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。我写下了类型参数,但没有得到任何结果。。。