반응형
리스트의 순서를 랜덤으로 설정하는 방법은 여러가지가 있을텐데, 아래는 그중 LINQ를 사용하는 간단한 방법 하나입니다.
myList = myList.OrderBy(_ => Guid.NewGuid());
여기서 값을 하나 추출하고 싶다면 뒤에 First() 또는 FirstOrDefault()를 붙이면 됩니다.
var selectValue = myList.OrderBy(_ => Guid.NewGuid()).First();
여기서 특정 값이 추출되지 않길 바란다면, Remove()로 원소를 제거하고 돌리시면 됩니다.
var myList = new List<int> { 0, 1, 2, 3, 4 };
myList.Remove(3);
var selectValue = setArray.OrderBy(_ => Guid.NewGuid()).First();
원본 리스트의 값을 변경시키지 않고 싶으시다면 아래처럼 리스트를 복제해서 사용해주세요.
var myList = new List<int> { 0, 1, 2, 3, 4 };
var duplicateList = myList.ToList();
duplicateList.Remove(3);
var selectValue = duplicateList.OrderBy(_ => Guid.NewGuid()).First();
반응형
'C# > LINQ' 카테고리의 다른 글
List나 Array의 원소들의 순서를 랜덤으로 섞기 (1) | 2023.12.03 |
---|