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
'C#' 카테고리의 다른 글
[C#] 링크(LINQ) - 집합 연산자 Distinct, Union, Intersect, Except (0) | 2023.07.20 |
---|---|
[C#] 링크(LINQ) Take(), Skip() (0) | 2023.07.17 |
[C#] Closure(클로저) 이해하기 (0) | 2023.05.02 |
[C#] Action, Predicate, Function (0) | 2022.11.15 |
[C#] 제네릭 형식 제약조건 (1) | 2022.09.30 |