작성
·
338
0
// LINQ 버전 레벨 2배
{
var players =
from p in _players
where p.ClassType == ClassType.Knight && p.Level >= 50
orderby p.Level
select new { Hp = p.Hp, Level = p.Level * 2 };
Console.WriteLine();
foreach (Player p in players) // 구문오류
{
Console.WriteLine($"직업 : {p.classType}, 레벨 : {p.Level}, Hp : {p.Hp}, 공격력 : {p.Attack}");
}
}
14:40 쯤에 select에서 new를 이용하여 레벨을 2배인 상태로 추출이 가능하다고 해서 직접 확인해보려 하니까 잘 안되네요 ㅠㅠ
foreach문에서 구문오류를 확인해보니 'anonymous type: int Hp, int Level형식을 Player형식으로 변환할 수 없다'고 뜨네요. Player형을 쓰면 안된다는 것 같은데. 그러면 어떤 자료형을 써야하는지 감이 안잡힙니다..
Q1) foreach문의 코드를 어떻게 고쳐야 anonymous type을 출력할 수 있을까요? 레벨이 2배로 된 것을 눈으로 확인하고 싶습니다!
답변 1
0
anonymous 타입으로 받아온 players는 말 그대로 익명 타입이지 player가 아닙니다.
foreach (Player p in players
이렇게 하지 마시고 var p로 바꿔보세요.
감사합니다 바로 해결됐네요!