Ruya Games

리스트 랜덤으로 섞기 + 선택할때 특정 값 나오지 않도록 하기 본문

C#/LINQ

리스트 랜덤으로 섞기 + 선택할때 특정 값 나오지 않도록 하기

SadEvil 2023. 12. 5. 09:51

리스트의 순서를 랜덤으로 설정하는 방법은 여러가지가 있을텐데, 아래는 그중 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