별 거 아닌데 엄청 고생함..하고 싶었던 것은 오늘의 추천음식이나 운동을 랜덤으로 하나 표시하는 것이었다. 처음에는 쉽다고 생각했는데 의외로 고생했다.
고생한 이유는 간단한데, 데이터베이스에서 가져온 데이터셋 중 하나를 렌덤으로 추출하고 싶은데 그걸 한 번의 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();
댓글
댓글 쓰기