.
- 여러 입력 시퀀스를 새 형식을 가진 단일 출력 시퀀스로 병합합니다.
- 소스 시퀀스에 있는 각 요소의 속성 하나만으로 또는 여러 속성으로 구성된 출력 시퀀스를 만듭니다.
- 요소가 소스 데이터에서 수행된 작업의 결과로 구성된 출력 시퀀스를 만듭니다.
- 출력 시퀀스를 다른 형식으로 만듭니다. 예를 들어 데이터를 SQL 행 또는 텍스트 파일에서 XML로 변환할 수 있습니다.
여러 입력을 단일 출력 시퀀스로 결합
Concat로 두 데이터를 결합
class Student
{
public string First { get; set; }
public string Last {get; set;}
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public List<int> Scores;
}
class Teacher
{
public string First { get; set; }
public string Last { get; set; }
public int ID { get; set; }
public string City { get; set; }
}
class DataTransformations
{
static void Main()
{
// Create the first data source.
List<Student> students =
[
new Student { First="Svetlana", Last="Omelchenko", ID=111,
Street="123 Main Street", City="Seattle",
Scores= new List<int> { 97, 92, 81, 60 } },
new Student { First="Claire", Last="O’Donnell",ID=112,
Street="124 Main Street",City="Redmond",
Scores= new List<int> { 75, 84, 91, 39 } },
new Student { First="Sven", Last="Mortensen", ID=113,
Street="125 Main Street", City="Lake City",
Scores= new List<int> { 88, 94, 65, 91 } },
];
// Create the second data source.
List<Teacher> teachers =
[
new Teacher { First="Ann", Last="Beebe", ID=945, City="Seattle" },
new Teacher { First="Alex", Last="Robinson", ID=956, City="Redmond" },
new Teacher { First="Michiyo", Last="Sato", ID=972, City="Tacoma" }
];
// Create the query.
var peopleInSeattle = (from student in students
where student.City == "Seattle"
select student.Last)
.Concat(from teacher in teachers
where teacher.City == "Seattle"
select teacher.Last);
Console.WriteLine("The following students and teachers live in Seattle:");
// Execute the query.
foreach (var person in peopleInSeattle)
{
Console.WriteLine(person);
}
}
}
/* Output:
The following students and teachers live in Seattle:
Omelchenko
Beebe
*/
각 소스 요소의 하위 집합 선택
소스 요소의 멤버를 하나만 선택하려면 점 작업을 사용합니다. 다음 예제에서는 Customer 개체에 City 문자열을 비롯한 여러 public 속성이 포함된다고 가정합니다. 실행될 경우 이 쿼리는 문자열의 출력 시퀀스를 생성합니다.
var query = from cust in Customers
select cust.City;
소스 요소의 속성의 두 개 이상 포함된 요소를 만들려면 개체 이니셜라이저를 명명된 개체 또는 무명 형식과 함께 사용합니다. 다음 예제에서는 무명 형식을 사용하여 각 Customer 요소의 두 개 속성을 캡슐화하는 방법을 보여 줍니다.
var query = from cust in Customer
select new {Name = cust.Name, City = cust.City};
메모리 내 개체를 XML로 변환
class XMLTransform
{
static void Main()
{
// Create the data source by using a collection initializer.
// The Student class was defined previously in this topic.
List<Student> students =
[
new Student {First="Svetlana", Last="Omelchenko", ID=111, Scores = new List<int>{97, 92, 81, 60}},
new Student {First="Claire", Last="O’Donnell", ID=112, Scores = new List<int>{75, 84, 91, 39}},
new Student {First="Sven", Last="Mortensen", ID=113, Scores = new List<int>{88, 94, 65, 91}},
];
// Create the query.
var studentsToXML = new XElement("Root",
from student in students
let scores = string.Join(",", student.Scores)
select new XElement("student",
new XElement("First", student.First),
new XElement("Last", student.Last),
new XElement("Scores", scores)
) // end "student"
); // end "Root"
// Execute the query.
Console.WriteLine(studentsToXML);
}
}
<Root>
<student>
<First>Svetlana</First>
<Last>Omelchenko</Last>
<Scores>97,92,81,60</Scores>
</student>
<student>
<First>Claire</First>
<Last>O'Donnell</Last>
<Scores>75,84,91,39</Scores>
</student>
<student>
<First>Sven</First>
<Last>Mortensen</Last>
<Scores>88,94,65,91</Scores>
</student>
</Root>
소스 요소에서 작업 수행
class FormatQuery
{
static void Main()
{
// Data source.
double[] radii = [ 1, 2, 3 ];
// LINQ query using method syntax.
IEnumerable<string> output =
radii.Select(r => $"Area for a circle with a radius of '{r}' = {r * r * Math.PI:F2}");
/*
// LINQ query using query syntax.
IEnumerable<string> output =
from rad in radii
select $"Area for a circle with a radius of '{rad}' = {rad * rad * Math.PI:F2}";
*/
foreach (string s in output)
{
Console.WriteLine(s);
}
}
}
/* Output:
Area for a circle with a radius of '1' = 3.14
Area for a circle with a radius of '2' = 12.57
Area for a circle with a radius of '3' = 28.27
*/
'C# > LINQ' 카테고리의 다른 글
확장명 메서드 (0) | 2024.01.03 |
---|---|
C# LINQ 쿼리를 작성하여 데이터 쿼리 (0) | 2024.01.01 |
쿼리 식 기본 사항 (0) | 2023.12.30 |
LINQ 쿼리 소개(C#) (0) | 2023.12.30 |