본문 바로가기
C#

[C#] 링크(LINQ) 메서드식 표현

by 코모's 2023. 7. 17.
반응형

Single() / SingleOrDefault()

해당 함수는 데이터가 하나라는 전제하에 사용된다.

만약 여러 Row를 리턴하면 에러가 발생한다.

 

Single()은 데이터가 반드시 1개 존재하며, 그렇지 않은 경우 Exception을 발생시킬 때 쓰는 메서드이고, SIngleOrDefault()는 데이터가 1개일때는 해당 데이터를 가져오고 테이더가 없을 경우에는 해당 Type의 디폴트 값(일반적으로 NULL)을 리턴할 때 사용된다.

일반적으로 SingleOrDefault()를 사용하여  NULL을 체크하는 방식을 자주 사용한다.

 

예제

var v = db.Orders.Where(o => o.Order_ID == 10001).SingleOrDefault();
if (v != null)
{
    txtDate.Text = v.Order_Date.ToString();
}

 


First() / FirstOrDefault()

만약 조건식에 맞는 처음 데이터를 찾는 경우, First() 혹은 FirstOrDefault() 라는 함수를 사용한다.

이는 데이터가 여러 개 리턴될 경우에도 사용할 수 있으며, 그중 맨 처음 데이터만을 리턴한다.

데이터가 없는경우에 First()는 오류가 발생하고, FirstOrDefault()는 해당 Type의 디폴트 값(일반적으로 NULL)을 리턴한다.

이 함수도 FirstOrDefault()를 사용하여 NULL을 체크하는 방식이 좋다.

 

예제

var v = db.Orders.Where(o => o.Customer_ID == "FRANS").FirstOrDefault();

 


OrderBy()

데이터를 오름차순 내림차순으로 정의하기 위해서는 OrderBy()(오름) 혹은 OrderByDescending()(내림) 메서드를 사용한다.

등호를 사용하여 해당 값을 가진 데이터를 맨 처음에 오게하고 싶으면 내림차순을 이용하여 사용할 수 있다.

dataList.OrderByDescending(x => x == 3);

 

하지만 특정값을 맨 앞에두고 나머지 값들도 정렬해야 하는겨우에는 오름차순 후 ThenBy()를 이용해야 한다.

dataList.OrderBy(x => x != 3).Thenby(x => x);

 


Select()

Select() 메서드는 데이터를 변형하거나 부분 선택하여 새로운 클래스를 만들어 리턴하고 싶을 때 사용한다.

Class MyData
{
	string name;
    int index;
}

public void Main()
{
	var myDataList = new MyData[5];
    //데이터 넣는부분 생략
    
    var nameList = myDataList.Select(data => data.name);
}

 

자세한 내용은 아래 링크 참조

https://nomad-programmer.tistory.com/200

 

 

 

 

 

 

 

반응형