2013-04-01 1 views
1

미안 가입하려고 조인 Dictionary<int, string>List<MyClass>하지만 방법은 사전 <int, string> 및 목록 <MyClass> 오류 (방법 형식 인수가 사용에서 추론 할 수 없음)

"타입의 인수를 할 수없는 오류가 발생합니다 사용법에서 추론해라. "

하지만 모든 인수가 완벽하게 정의 된 날 것으로 보인다 ...

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(); 

rowdevice.Keyint입니다 devicepair<int,string>이다하는 이며, device.Value는 K이다. 문제가 무엇입니까? 어리석은 짓인지는 모르겠지만이 오류가 붙어 있습니다.

답변

1

row.data[0]은 문자열이지만 device.Key은 정수이므로 키 유형이 일치하지 않습니다.

+0

실은 바보 같은 일. row.data [0]을 int로 변환해야했습니다. Convert.ToInt32 (row.data [0]) – Alberto

+0

컴파일러가 형식 인수를 유추 할 수 있다고해도 (또는 사용자의 경우와 같이) 작성할 수 있습니다. 어쨌든 무슨 일이 일어나고 있는지 잘 모르겠다면 어쨌든 그럴거야 : rows.Join , int, string> (...) –

+0

VS는 형식 인수를 추론 할 수 없다고 불평하지만 문제는 타입 인자를 추론하지만 join에 같은 타입 인자가 필요하다면, int를 문자열이나 viceversa에 던질만큼 똑똑하지는 않습니다. 형식 인수를 적어 봤지만 아무것도 얻지 못했습니다 ... – Alberto

0

device => device.Keyint 인 이유는 row.data[0]string이므로이 오류가 발생했습니다. 둘 다 제네릭 유형 TKey이며 일관성이 있어야합니다. device.KeyToString()을 호출하여 문제를 해결할 수 있습니다.

rows = rows.Join(devices, row => row.data[0], device => device.Key.ToString(), (row, device) => { row.data[1] = device.Value; return row; }).ToList(); 
관련 문제