낑깡의 게임 프로그래밍 도전기

C# 링큐(Linq) 본문

C#

C# 링큐(Linq)

낑깡겜플밍 2025. 7. 26. 17:21
반응형

링큐

Where, First

List<int> ints = new List<int>();
ints.Add(1);
ints.Add(2);
ints.Add(3);
ints.Add(4);
ints.Add(5);
ints.Add(6)
ints.Add(7);
ints.Add(8);
ints.Add(9);
ints.Add(10);

이렇게 리스트가 있을때 5이상의 값을 출력하려면 

foreach(int i in ints)
{
	if(i>=5)
    	intOver.Add(i);
}

이렇게 쓰겠지만 Where를 써서 줄이면 

Func<int, bool> func = (int value) => value >= 5;//람다식

//int.Where(CheckOverValue);
//int.Where((int value) => value >= 5);
//int.Where(value => value >= 5);
int value = ints.Where(v => v >= 20).FirstOrDefault();//FirstOrDefault 하나만 가져오기//그냥 First보다 추천 First는 조건에 맞는 값이 없으면 null 반환. 이것은 초기값 반환

provate static bool CheckOverValue(int value)
{
	return value >= 5;
}

이렇게 극적으로 줄일 수 있다.

List와 Array는 IEnumerable를 상속 받고 있어서 Where사용이 가능하다.

IEnumerable<int> enumerable = ints.Where(v => v >= 5);
foreach (int i in enumerable)
{
	Console.WriteLine(i);
}

//List<int> lists = ints.Where(v => v >= 5).ToList();
//int[] lists = ints.Where(v => v >= 5).ToArray();

출력 형태

 

class Info
{
	public int Money { get; private set;}
    public string MyProperty {get; set;}
    
    puvlic Info(int Money, string name)
    {
    	Money = money;
        Name = name;
    }
}

static void Main(string[] args)
{
	List<info> infos = New List<info>();
    infod.Add(new Info(monet: 1, name: "진수"));
    infod.Add(new Info(monet: 2, name: "진수"));
    infod.Add(new Info(monet: 3, name: "진수"));
    infod.Add(new Info(monet: 4, name: "진수"));
    infod.Add(new Info(monet: 5, name: "진수"));
    infod.Add(new Info(monet: 6, name: "진수"));
    infod.Add(new Info(monet: 7, name: "진수"));
    infod.Add(new Info(monet: 8, name: "진수"));
    infod.Add(new Info(monet: 9, name: "진수"));
    infod.Add(new Info(monet: 10, name: "진수"));
    
    IEnumerable<info> enumerable = info.Where((v) => v.Money >= 5);
}

클래스 형태는 이렇게 쓸 수 있다.

 

OrderBy

IOderedEnumerable<Info> indos1 = infos1 = infos.OrderBy(v => v.Money); //정렬
//Info[] infos1 = infos.OrderBy(v => v.Money).ToArray();

정렬하기

Info[] infos1 = infos.OrderByDescending(v => v.Money).ToArray();

역순 정렬

 

Max

int v = infos.Max(v => v.Money);

가장 큰 숫자 가져오(Min도 가능)

 

Select (class, 익명형식으로 받기) 내가 원하는 형식으로 조회를 하겠다.

//IEnumerable<string> enmerable = indos.Select(v => v.name);
List<string> enumerable = infos.select(v => v.Name).ToList();

클래스에서 이름만 가져오는 것

ver enumerable = infos.Select(v => new {N = v.Name, M = v.Money});

여러 정보 가져오기. 익명형식

 

링큐는 종류가 많아서 익히는데 오래 걸릴 수 있다.

링큐를 굳이 쓰는 이유는 많은 사람들이 사용하기도 하고 코드를 줄이는데 좋고 직관적이다.

반응형

'C#' 카테고리의 다른 글

C# 비동기(Thread, aysnc await)  (1) 2025.07.28
c# 제네릭(Generic)  (2) 2025.07.27
C# 람다식(Lamba)  (0) 2025.07.25
C# 서브클래스, 인터페이스, 추상클래스  (1) 2025.07.24
C# static, deepcopy  (1) 2025.07.23