분명 제가 잘못한것이겠지만 그냥 답변을 바라기 보다는 비슷한 현상을 겪어보신분 있나 해서 올려봅니다.
이중슬립 : 전자의 운동이 관찰의 따라 다르게 발생하는 현상
코드는 예를 들어
c.list = rt.detaillst.Where(p => p.idx== c.idx && p.SystemName.Trim() == "test").ToLiST()
평범하게 프로시져 받아온 데이타를 List 에 담았습니다.
그리고 이걸로 c.list.Count 를 갯수를 헤아렸습니다.
근데 0 이 나옵니다. 분명히 데이타가 있음에도 ;;;
진짜 원인도 모르겠고 원격지 서버라 디버깅도 안되고 하도 답답해서
foreach (var r in rt.detaillst)
{
_logger.LogInformation("00:" +r.idx.ToString() +"|" );
}
부모 리스트 값을 LOG를 찍으니까 Count 값이 3으로 다시 나옵니다.
이게 말이 되는 상황인가 전체적인 코드나 환경을 공유할수 없지만
아니 관찰하지 않을때는 값이 없는데
Log로 관찰을 하니까 데이타 존재하는 현상
예전에는 이런 현상이 없는데 데이타가 커지면서 요근래 생겼습니다.
(10만개 정도)
예전부터 Linq 로 데이타 다룰떄 10만개가 넘으면 뭔가 이상작동을 했던 경험이 있어
Linq 에 대한 불신이 약간 있긴 한데 이번경우는 너무 황당하네요
당연히 제가 뭐 잘못해서 발생한 현상이고 이유는 있을것고 나중에
아 나 바보인가 하겠지만 지금은 그렇네요
rt.detaillst가 어떻게 만들어졌는지 알아야 원인을 추측해 볼 수 있지 않을까요? foreach돌려서 잘 나온다는건 foreach돌리는 순간 rt.detaillst가 평가되었다는거고, 타이밍 이슈가 해소되었다고 보여져요. 위에 @fizzy 님 말씀 처럼요.
그리고 c.idx도 중요해 보입니다.