본문 바로가기
C# 기술

LINQ , lambda 사용예제

by bryan.oh 2019. 1. 28.
반응형

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();




 

 

728x90
반응형

댓글