2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

별 거 아닌데 엄청 고생함..하고 싶었던 것은 오늘의 추천음식이나 운동을 랜덤으로 하나 표시하는 것이었다. 처음에는 쉽다고 생각했는데 의외로 고생했다.
고생한 이유는 간단한데, 데이터베이스에서 가져온 데이터셋 중 하나를 렌덤으로 추출하고 싶은데 그걸 한 번의 LINQ로 해결하려고 했기 때문이었다.
해결한 방법은 간단한데, 먼저 데이터를 가져와서 리스트나 배열로 만든 후에 랜덤값을 가지고 하나를 뽑으면 된다. 방법이 여러가지가 있었는데 나는 2가지를 해 봤다.
방법 1은 랜덤객체를 생성한 후에 데이터셋 개수를 이용해서 무작위로 한 개를 끄집어냄.
방법 2는 NewGuid를 사용하는 방법이다.
방법 2가 간편하네..얻은 교훈?! Divide and conquer!! 나누어서 공략하자!!

//  food, exercise, goodの中で、良い体質の項目をそれぞれ持ってくる
var foodquery = (from f in model.foods
                where f.goodtypeid == TypeId && f.flag == true && f != null
                orderby f.id
                select new 
                {
                    foodname = f.foodname,
                    foodmemo = f.foodmemo,
                }).ToList();

// <方法1>
Random rnd = new Random();
var foodcontent = foodquery.ElementAt(rnd.Next(foodquery.Count()));
// <方法2>
// var foodcontent = foodquery.OrderBy(_ => Guid.NewGuid()).FirstOrDefault();

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[react-native] uuid 생성이 에러가 날 때 대처법