C# LINQ, LAMBDA
사용 예제
linq 는 늦은지연 계산방법 이라고도 하죠.
식을 써놓고, 실제 사용할 때 식을 계산하는 방식인거죠.
아래의 첫번째 예제에서는 foreach 문에서 식을 계산합니다. 짧은 예제이니 굳이 차이는 없겠지만, ㅎ
예제.
int 배열의 스코어 중에서 80 초과인 것들만 찾음
아래의 코드는 80 초과를 내림차순 정렬을 합니다.
// Specify the data source.
int[] scores = new int[] { 97, 92, 81, 60 };
// Define the query expression.
IEnumerable<int> scoreQuery = // IEnumerable<int> 대신 var 라고 써도된다.
from score in scores
where score > 80
select score;
// Execute the query.
foreach (int i in scoreQuery)
{
Console.Write(i + " ");
}
Console.ReadLine();
IEnumerable<string> highScoresQuery = // string 도 가능.
from score in scores
where score > 80
orderby score descending
select String.Format("the score is {0}", score);
foreach (string i in highScoresQuery)
{
Console.Write(i + ",");
}
=======================================================================================
80점 초과하는 것의 갯수.
IEnumerable<int> highScoresQuery3 =
from score in scores
where score > 80
select score;
int scoreCount = highScoresQuery3.Count();
// 요거나 요 아래거나 같음.
int highScoreCount =
(from score in scores
where score > 80
select score)
.Count();
======================================================================================
인구수가 10만 초과인 City class 구함.
//Query syntax
IEnumerable<City> queryMajorCities =
from city in cities
where city.Population > 100000
select city;
// 위나 아래 같음
// Method-based syntax
IEnumerable<City> queryMajorCities2 = cities.Where(c => c.Population > 100000);
======================================================================================
최대값 구하기 max
int highestScore =
(from score in scores
select score)
.Max();
// or split the expression
IEnumerable<int> scoreQuery =
from score in scores
select score;
int highScore = scoreQuery.Max();
======================================================================================
두번의 from 절
이건 contries 라는 변수에 City class 가 있다고 가정하고
List<City> largeCitiesList =
(from country in countries
from city in country.Cities
where city.Population > 10000
select city)
.ToList();
// or split the expression
IEnumerable<City> largeCitiesQuery =
from country in countries
from city in country.Cities
where city.Population > 10000
select city;
List<City> largeCitiesList2 = largeCitiesQuery.ToList();
======================================================================================
# 하나만 가져오기.
var tmpImgPath = (from t in adminDb.tb_MainImg
where t.Id == model.Id
select t.imgPath).
First();
'C# 기술' 카테고리의 다른 글
LINQ join 예제 (0) | 2019.01.28 |
---|---|
LINQ 가이드 ( Microsoft ) (0) | 2019.01.28 |
Thread 사용 시 Application 완전히 종료하기. (0) | 2019.01.27 |
c# throw Exception (0) | 2019.01.27 |
C# 특정 폴더의 지정된 확장자들의 파일들 가져오기 (0) | 2019.01.25 |
댓글