아래 코드를 참조하십시오. 예외 "InvalidCastException"을 리턴합니다. 그리고 주요 질문은 - 왜?
무엇이 잘못 되었나요?linq의 InvalidCastException 오류
오류 텍스트 :
유형 의 개체를 캐스팅 할 수 없습니다 'WhereSelectListIterator`2는 [Monopolowy_beta.Gracz는 Monopolowy_beta.Gracz]' 은 'Monopolowy_beta.Gracz'를 입력합니다. 이 라인에서
namespace Monopolowy_beta
{
class Program
{
static void Main(string[] args)
{
List<Gracz> lista = new List<Gracz> { };
Gracz g1 = new Gracz();
Gracz g2 = new Gracz();
Gracz g3 = new Gracz();
g2.Id = 3;
lista.Add(g1);
lista.Add(g2);
lista.Add(g3);
g1 = GraczeTools.UstawAktywnegoGracza(lista, 3);
Console.ReadKey();
}
}
}
오류 :
var docelowy = from item in listagraczy where (item.Id==ID && item.czyAktywny == true) select listagraczy[listagraczy.IndexOf(item) + 1]; gracz = (Gracz)docelowy;
namespace Monopolowy_beta
{
static class GraczeTools
{
public static Gracz UstawAktywnegoGracza(List<Gracz> listagraczy, int ID)
{
Gracz gracz = new Gracz();
if (ID == 4){
var docelowy = from item in listagraczy where (item.czyAktywny == true && item.Id == 3) select listagraczy[1];
gracz = (Gracz)docelowy;
}
if (ID != 4){
var docelowy = from item in listagraczy where (item.Id==ID && item.czyAktywny == true) select listagraczy[listagraczy.IndexOf(item) + 1];
gracz = (Gracz)docelowy;
}
return gracz;
}
}
}
예, 대답에서 언급 한 '길 수'는 여기에서 자세히 설명되어 있으며, 한 줄짜리 문자는 내가 생각했던 것보다 더 철자가 맞습니다. +1, 좋은 물건. – tmesser
어, 큰 감사 @ lazyberezovsky, 좋은 충고! ;-) – whoah
하지만 마지막으로 -이 코드의 일부를 exacly 수행하는 방법을 설명해 주시겠습니까? 'item => item.Id == 3 && (ID! = 4 || item.czyAktywny)'. 나는 그 결과와 그것을 어떻게 알 수 있느냐를 잘 알고 있지만, 한 단계 한 단계를 기술 할 수 있다면 감사 할 것입니다. – whoah