BankAccount account = new();
account.Name = "알지오";
Console.WriteLine($"{account.Name}의 계좌입니다.");
class BankAccount
{
public string Name
{
set;
get;
}
}
->
알지오의 계좌입니다.
BankAccount account = new();
account.Name = "알지오";
Console.WriteLine($"{account.Name}의 계좌입니다.");
BankAccount account2 = new("alzio", "11111111", 10000);
Console.WriteLine($"{account2.Name}님의 계좌({account2.Number}가 생성되었습니다. " +
$"잔액 : { account2.Balance}원");
class BankAccount
{
public string Name
{
set;
get;
}
public string Number
{
get;
}
public decimal Balance
{
get;
}
public BankAccount()
{
Console.WriteLine("새로운 빈 계좌아 생성되었습니다. " +
"추가정보를 입력하세요.");
}
//생성자
public BankAccount(string name, string number, decimal balance)
{
Name = name;
Number = number;
Balance = balance;
}
}
->
새로운 빈 계좌아 생성되었습니다. 추가정보를 입력하세요.
알지오의 계좌입니다.
alzio님의 계좌(11111111가 생성되었습니다. 잔액 : 10000원
var member = new Member("alzio", "132345");
member.FindPassword("alzio");
class Member
{
//readonly : 읽기전용
// 생성자가 아닌 다른 함수에서 선언할 수 없다!
private readonly string id;
private readonly string password;
//생성자
public Member(string id, string password)
{
this.id = id;
this.password = password;
}
public void FindPassword(string id)
{
if(this.id == id)
{
string shortPassword = password[..4] + "****";
Console.WriteLine($"비밀번호는 {shortPassword}입니다.");
}
else
{
Console.WriteLine("해당 아이디를 찾을 수 없습니다.");
}
}
}
->
비밀번호는 1323****입니다.
//열거형
Console.WriteLine((int)Notes.A);
enum Notes { A = 50,B,C,D,E,F,G}
->
50
int[] note_numbers = { 4, 2, 2, 3, 1, 1, 0, 1, 2, 3, 4};
foreach (var item in note_numbers)
{
Console.Write((Notes)item + " ");
}
enum Notes {도1, 레, 미, 파, 솔, 라, 시, 도2}
->
솔 미 미 파 레 레 도1 레 미 파 솔
B b = new(); // B의 클래스 인스턴스b로 선언
Console.WriteLine(b.number);
b.Hello();
public class A
{
public int number = 10; //멤버 변수
public void Hello() // 멤버 함수
{
Console.WriteLine("Hello");
}
}
public class B : A //A라는 클래스를 상속 받겠다
{
}
->
10
Hello
만약 class A 내에 멤버변수와 멤버 함수가 public이 아니라 private면 B클래스에서 접근이 불가능하다!!
//Success 중첩된 클래스 내에 있으면 private이라도 가능
public class Basic
{
private int _number = 10;
public class A : Basic
{
public int GetNum()
{
return _number;
}
}
}
//Error 중첩되어 있지 않으므로 불가능!
public class B : Basic
{
public int GetNum()
{
return _number;
}
}
private이라도 중첩된 클래스 내에 있으면 가능!
//Basic안에있는 A클래스의 멤버함수인
//GetNumber()의 return 값을 출력
var a = new Basic.A();
Console.WriteLine();
Console.WriteLine(a.GetNum());
//Success 중첩된 클래스 내에 있으면 private이라도 가능
public class Basic
{
private int _number = 10;
public class A : Basic
{
public int GetNum()
{
return _number;
}
}
}
->
10
B b = new();
b.Hello();
public class A
{
public void Hello()
{
Console.WriteLine("Hello");
}
}
public class B : A
{
public new void Hello()
{
Console.WriteLine("Hello B");
}
public void Hello2()
{
Console.WriteLine("Hello B2");
}
}
->
Hello B
상송받는 B클래스 내에 다른 값을 출력하고 싶을 때 B클래스 내에 반환형과 같은 이름의 클래스를 적고 new 키워드를 기입하면 된다!
또, 새로운 함수 Hello2도 작성가능하고 불러올 떈 b.Hello2()를 맨위에 적어주면 된다!
//다형성 부모에서는 virtual, 자식에서는 override
Magazine magazine = new();
magazine.getTitle();
GetTitle(magazine);
void GetTitle(Book book)
{
book.getTitle();
}
class Book
{
public void getTitle()
{
Console.WriteLine("Book Title");
}
}
class Magazine : Book
{
public new void getTitle()
{
Console.WriteLine("Magazine Title");
}
}
->
Magazine Title
Book Title
magazine.getTitle();는 자식의 Title을
GetTitle(magazine);는 부모의 Title을 출력한다. 이 떄 둘 다 자식의 타이틀을 출력하기 위해 다형성이 필요하다!
//다형성 부모에서는 virtual, 자식에서는 override
Magazine magazine = new();
magazine.getTitle();
GetTitle(magazine);
void GetTitle(Book book)
{
book.getTitle();
}
class Book
{
public virtual void getTitle()
{
Console.WriteLine("Book Title");
}
}
class Magazine : Book
{
public override void getTitle()
{
Console.WriteLine("Magazine Title");
}
}
->
Magazine Title
Magazine Title
//다형성 부모에서는 virtual, 자식에서는 override
부모 : public virtual void getTitle()
자식 : public override void getTitle()
//Book book = new Book();
Book book = new Magazine();
//Book book = new Novel();
GetTitle(book);
void GetTitle(Book book)
{
book.getTitle();
}
class Book
{
public virtual void getTitle()
{
Console.WriteLine("Book Title");
}
}
class Magazine : Book
{
public override void getTitle()
{
Console.WriteLine("Magazine Title");
}
}
class Novel : Book
{
}
->
1. //Book book = new Book(); 일 때
-> Book Title
2. //Book book = new Magazine(); 일 떄
-> Magazine Title
3. //Book book = new Novel(); 일 떄
-> Book Title
외부 접근은 불가능하나, 자식클래스에서는 접근 가능
B b = new();
Console.WriteLine(b.a); // error
Console.WriteLine(b.b);
Console.WriteLine(b.c); // error
class A
{
private int a = 10;
public int b = 20;
protected int c = 30;
}
class B : A
{
public void Hello()
{
Console.WriteLine(a); // error
Console.WriteLine(b);
Console.WriteLine(c);
}
}
//추상 클래스는 추상 메서드를 사용한다
public abstract class A
{
public abstract void Test(); //내용 따로 구현 X
}
Basil basil = new();
var mint = new Mint();
basil.Name();
mint.Name();
basil.Kindof();
mint.Kindof();
public abstract class Herb
{
public abstract void Name();
public void Kindof()
{
Console.WriteLine("허브 종 입니다.");
}
}
public class Basil : Herb // 부모가 추상클래스인 경우 자식클래스의 메서드에
{ // 재정의한다는 override가 있어야 함!
public override void Name()
{
Console.WriteLine("바질");
}
}
public class Mint : Herb
{
public override void Name()
{
Console.WriteLine("민트");
}
}
->
바질
민트
허브 종 입니다.
허브 종 입니다.
//추상클래스와 인터페이스 모두 아무 내용이 없는
//메서드를 적고 있기 때문에 상송받는 자식 클래스에서
//이에 대한 내용을 꼭 적어줘야한다는 강제성이 부여된다.
var test = new Test();
test.A();
test.B();
public interface IMyInterface
{
public void A();
public void B();
}
public class Test : IMyInterface
{
public void A()
{
Console.WriteLine("A입니다.");
}
public void B()
{
Console.WriteLine("B입니다.");
}
}
->
A입니다.
B입니다.
//자료형이 무엇이든 상관없이 우리가 입력한 자료형대로 출력된다!
int i = 10;
string s = "hello";
PrintValue(i, s);
void PrintValue<T1,T2>(T1 a, T2 b)
{
Console.WriteLine($"입력한 값 : {a}, {b}");
}
->
입력한 값 : 10, hello
// LINQ (Language Integrated Query)
int[] numbers = { 1, 8, 5, 2, 1, 6, 8, 4, 2 };
var query =
from num in numbers
where num % 2 == 0
select num;
var query2 = numbers.Where(num => num % 2 == 0).Select(n => n*2);
var query3 = numbers.Where((num, i) => num > i);
foreach (var n in query)
{
Console.Write(n + " ");
}
Console.WriteLine();
foreach (var n in query2)
{
Console.Write(n + " ");
}
Console.WriteLine();
foreach (var n in query3)
{
Console.Write(n + " ");
}
->
8 2 6 8 4 2
16 4 12 16 8 4
1 8 5 6 8
반지름으로 원의 넓이 계산하기
int[] radius = { 5, 10, 15, 20 };
var area = from r in radius
select r * r * Math.PI;
var area2 = radius.Select(r => r * r * Math.PI);
Console.WriteLine("각 반지름의 원의 넓이");
foreach (var item in area2)
{
Console.WriteLine($"{item:N3}");
}
->
각 반지름의 원의 넓이
78.540
314.159
706.858
1,256.637
//새로운 클래스 생성
string[] fruits = { "Apple", "Banana", "Cherry" };
int id = 1;
var items = from f in fruits
select new { ID = id++, Name = f.ToUpper() };
foreach (var item in items)
{
Console.WriteLine($"ID : {item.ID}, Name : {item.Name}");
}
->
ID : 1, Name : APPLE
ID : 2, Name : BANANA
ID : 3, Name : CHERRY
//상품재고 확인하기
//Product.cs
namespace Csharp
{
class Product
{
public string ID { get; set; }
public int InStock { get; set; }
public int Price { get; set; } = 0;
public static List<Product> GetProducts()
{
List<Product> products = new()
{
new Product { ID = "A001", InStock = 0, Price = 4000 },
new Product { ID = "A002", InStock = 8, Price = 5000 },
new Product { ID = "A003", InStock = 9, Price = 7000 },
new Product { ID = "B001", InStock = 0, Price = 5000 },
new Product { ID = "B002", InStock = 2, Price = 25000 },
new Product { ID = "B003", InStock = 0, Price = 12000 },
new Product { ID = "C001", InStock = 5, Price = 5000 },
new Product { ID = "C002", InStock = 0, Price = 15000 },
new Product { ID = "C003", InStock = 6, Price = 8000 },
new Product { ID = "D001", InStock = 3, Price = 5000 },
};
return products;
}
}
}
using Csharp;
List<Product> products = Product.GetProducts();
var unStock = from p in products
where p.InStock == 0
select p;
foreach (var item in unStock)
{
Console.WriteLine($"{item.ID}번 재고 없음");
}
->
A001번 재고 없음
B001번 재고 없음
B003번 재고 없음
C002번 재고 없음
// 재고가격 확인
using Csharp;
List<Product> products = Product.GetProducts();
int sum = 0;
var inStock = from p in products
where p.InStock != 0
select p;
foreach (var item in products)
{
sum += (item.InStock * item.Price);
}
Console.WriteLine($"재고 자산 : 총 {sum:C}원");
->
재고 자산 : 총 \241,000원
//select문으로 가격 계산
using Csharp;
List<Product> products = Product.GetProducts();
var info = from p in products
select (p.ID, p.Price, Total: p.Price * p.InStock);
Console.WriteLine("제품 정보를 출력합니다");
foreach (var item in info)
{
Console.WriteLine($"제품번호 : {item.ID}({item.Price:C}) \t재고자산 : {item.Total:C}");
}
->
제품 정보를 출력합니다
제품번호 : A001(\4,000) 재고자산 : \0
제품번호 : A002(\5,000) 재고자산 : \40,000
제품번호 : A003(\7,000) 재고자산 : \63,000
제품번호 : B001(\5,000) 재고자산 : \0
제품번호 : B002(\25,000) 재고자산 : \50,000
제품번호 : B003(\12,000) 재고자산 : \0
제품번호 : C001(\5,000) 재고자산 : \25,000
제품번호 : C002(\15,000) 재고자산 : \0
제품번호 : C003(\8,000) 재고자산 : \48,000
제품번호 : D001(\5,000) 재고자산 : \15,000
namespace CSharp
{
class Student
{
public string Name { get; set; }
public int Grade { get; set; }
public List<int> Scores;
public static List<Student> GetStudents()
{
List<Student> students = new()
{
new Student { Name = "alzio1", Grade = 1, Scores = new List<int> { 100, 50, 78 } },
new Student { Name = "alzio2", Grade = 2, Scores = new List<int> { 90, 90, 90 } },
new Student { Name = "alzio3", Grade = 2, Scores = new List<int> { 56, 90, 45 } },
new Student { Name = "alzio4", Grade = 1, Scores = new List<int> { 60, 58, 96 } },
new Student { Name = "alzio5", Grade = 1, Scores = new List<int> { 89, 53, 71 } },
new Student { Name = "alzio6", Grade = 3, Scores = new List<int> { 99, 53, 80 } },
new Student { Name = "alzio7", Grade = 3, Scores = new List<int> { 77, 68, 45 } },
new Student { Name = "alzio8", Grade = 1, Scores = new List<int> { 82, 100, 63 } },
new Student { Name = "alzio9", Grade = 2, Scores = new List<int> { 99, 100, 97 } },
new Student { Name = "alzio0", Grade = 1, Scores = new List<int> { 36, 51, 44 } }
};
return students;
}
}
}
using CSharp;
List<Student> students = Student.GetStudents();
var dataQuery =
from s in students
where s.Scores[0] >= 90 && s.Scores[1] >= 90 && s.Scores[2] >= 90
select s;
foreach (var item in dataQuery)
{
Console.WriteLine(item.Name);
}
->
alzio2
alzio9
//상품재고 확인하기
//Product.cs
namespace Csharp
{
class Product
{
public string ID { get; set; }
public int InStock { get; set; }
public int Price { get; set; } = 0;
public static List<Product> GetProducts()
{
List<Product> products = new()
{
new Product { ID = "A001", InStock = 0, Price = 4000 },
new Product { ID = "A002", InStock = 8, Price = 5000 },
new Product { ID = "A003", InStock = 9, Price = 7000 },
new Product { ID = "B001", InStock = 0, Price = 5000 },
new Product { ID = "B002", InStock = 2, Price = 25000 },
new Product { ID = "B003", InStock = 0, Price = 12000 },
new Product { ID = "C001", InStock = 5, Price = 5000 },
new Product { ID = "C002", InStock = 0, Price = 15000 },
new Product { ID = "C003", InStock = 6, Price = 8000 },
new Product { ID = "D001", InStock = 3, Price = 5000 },
};
return products;
}
}
}
using Csharp;
List<Product> products = Product.GetProducts();
var ordering = from p in products
orderby p.Price
select p;
Console.WriteLine("가격 순 정렬");
foreach (var item in ordering)
{
Console.WriteLine($"{item.ID} : {item.Price:C}");
}
->
가격 순 정렬
A001 : \4,000
A002 : \5,000
B001 : \5,000
C001 : \5,000
D001 : \5,000
A003 : \7,000
C003 : \8,000
B003 : \12,000
C002 : \15,000
B002 : \25,000
namespace Csharp
{
class Product
{
public string ID { get; set; }
public string Category { get; set; }
public int Price { get; set; } = 0;
public static List<Product> GetProducts()
{
List<Product> products = new()
{
new Product { ID = "A001", Category = "Clothes", Price = 4000 },
new Product { ID = "A002", Category = "Book", Price = 5000 },
new Product { ID = "A003", Category = "Food", Price = 7000 },
new Product { ID = "B001", Category = "Clothes", Price = 5000 },
new Product { ID = "B002", Category = "Food", Price = 25000 },
new Product { ID = "B003", Category = "Clothes", Price = 12000 },
new Product { ID = "C001", Category = "Food", Price = 5000 },
new Product { ID = "C002", Category = "Book", Price = 15000 },
new Product { ID = "C003", Category = "Clothes", Price = 8000 },
new Product { ID = "D001", Category = "Book", Price = 5000 },
};
return products;
}
}
}
using Csharp;
List<Product> products = Product.GetProducts();
var ordering = from p in products
orderby p.Category, p.Price
select p;
Console.WriteLine("카테고리별 가격 순 정렬");
foreach (var item in ordering)
{
Console.WriteLine($"<{item.Category}> {item.ID} : {item.Price:C}");
}
->
카테고리별 가격 순 정렬
<Book> A002 : \5,000
<Book> D001 : \5,000
<Book> C002 : \15,000
<Clothes> A001 : \4,000
<Clothes> B001 : \5,000
<Clothes> C003 : \8,000
<Clothes> B003 : \12,000
<Food> C001 : \5,000
<Food> A003 : \7,000
<Food> B002 : \25,000
namespace Csharp
{
class Product
{
public string ID { get; set; }
public string Category { get; set; }
public int Price { get; set; } = 0;
public static List<Product> GetProducts()
{
List<Product> products = new()
{
new Product { ID = "A001", Category = "Clothes", Price = 4000 },
new Product { ID = "A002", Category = "Book", Price = 5000 },
new Product { ID = "A003", Category = "Food", Price = 7000 },
new Product { ID = "B001", Category = "Clothes", Price = 5000 },
new Product { ID = "B002", Category = "Food", Price = 25000 },
new Product { ID = "B003", Category = "Clothes", Price = 12000 },
new Product { ID = "C001", Category = "Food", Price = 5000 },
new Product { ID = "C002", Category = "Book", Price = 15000 },
new Product { ID = "C003", Category = "Clothes", Price = 8000 },
new Product { ID = "D001", Category = "Book", Price = 5000 },
};
return products;
}
}
}
using ConsoleApp5;
List<Product> products = Product.GetProducts();
var query= from p in products
group p by p.Category into g
select (Category : g.Key, Product : g);
Console.WriteLine("카테고리별 그룹 출력");
foreach (var item in query)
{
Console.WriteLine($"<{item.Category}>");
foreach (var p in item.Product)
Console.WriteLine(p.ID);
}
->
카테고리별 그룹 출력
<Clothes>
A001
B001
B003
C003
<Book>
A002
C002
D001
<Food>
A003
B002
C001
namespace Csharp
{
class Order
{
public string OrderNumber { get; set; }
public string ProductID { get; set; }
public int Amount { get; set; } = 0;
public int TotalPrice { get; set; } = 0;
public static List<Order> GetOrders()
{
List<Order> orders = new()
{
new Order { OrderNumber = "A03125", ProductID = "C003", Amount = 4 },
new Order { OrderNumber = "A03285", ProductID = "B002", Amount = 2 },
new Order { OrderNumber = "A03702", ProductID = "A003", Amount = 3 },
new Order { OrderNumber = "A02155", ProductID = "A002", Amount = 1 },
new Order { OrderNumber = "A04605", ProductID = "A003", Amount = 1 },
new Order { OrderNumber = "A02845", ProductID = "C003", Amount = 2 },
new Order { OrderNumber = "A02962", ProductID = "D001", Amount = 3 },
new Order { OrderNumber = "A04760", ProductID = "B001", Amount = 3 },
new Order { OrderNumber = "A09350", ProductID = "B002", Amount = 2 },
new Order { OrderNumber = "A04722", ProductID = "B001", Amount = 4 },
new Order { OrderNumber = "A04628", ProductID = "C003", Amount = 1 }
};
return orders;
}
}
}
using Csharp;
List<Order> orders = Order.GetOrders();
var orderResult = from o in orders
group o by o.ProductID into g
orderby g.Key
select g;
foreach (var item in orderResult)
{
Console.Write($"{item.Key} :");
foreach (var id in item)
{
Console.Write(id.OrderNumber + " ");
}
Console.WriteLine();
}
->
A002 :A02155
A003 :A03702 A04605
B001 :A04760 A04722
B002 :A03285 A09350
C003 :A03125 A02845 A04628
D001 :A02962
namespace CSharp
{
class Student
{
public string Name { get; set; }
public int Grade { get; set; }
public List<int> Scores;
public static List<Student> GetStudents()
{
List<Student> students = new()
{
new Student { Name = "alzio1", Grade = 1, Scores = new List<int> { 100, 50, 78 } },
new Student { Name = "alzio2", Grade = 2, Scores = new List<int> { 90, 90, 90 } },
new Student { Name = "alzio3", Grade = 2, Scores = new List<int> { 56, 90, 45 } },
new Student { Name = "alzio4", Grade = 1, Scores = new List<int> { 60, 58, 96 } },
new Student { Name = "alzio5", Grade = 1, Scores = new List<int> { 89, 53, 71 } },
new Student { Name = "alzio6", Grade = 3, Scores = new List<int> { 99, 53, 80 } },
new Student { Name = "alzio7", Grade = 3, Scores = new List<int> { 77, 68, 45 } },
new Student { Name = "alzio8", Grade = 1, Scores = new List<int> { 82, 100, 63 } },
new Student { Name = "alzio9", Grade = 2, Scores = new List<int> { 99, 100, 97 } },
new Student { Name = "alzio0", Grade = 1, Scores = new List<int> { 36, 51, 44 } }
};
return students;
}
}
}
using CSharp;
List<Student> students = Student.GetStudents();
var testResult = from s in students
group s by s.Scores.Average() >= 80 into pass
select (Result: pass.Key, AvgScore: pass);
foreach (var item in testResult)
{
Console.WriteLine(item.Result ? "합격" : "불합격");
foreach (var student in item.AvgScore)
{
Console.WriteLine($"{student.Name} : {student.Scores.Average():N}점");
}
}
->
불합격
alzio1 : 76.00점
alzio3 : 63.67점
alzio4 : 71.33점
alzio5 : 71.00점
alzio6 : 77.33점
alzio7 : 63.33점
alzio0 : 43.67점
합격
alzio2 : 90.00점
alzio8 : 81.67점
alzio9 : 98.67점
namespace CSharp
{
class Student
{
public string Name { get; set; }
public int Grade { get; set; }
public List<int> Scores;
public static List<Student> GetStudents()
{
List<Student> students = new()
{
new Student { Name = "alzio1", Grade = 1, Scores = new List<int> { 100, 50, 78 } },
new Student { Name = "alzio2", Grade = 2, Scores = new List<int> { 90, 90, 90 } },
new Student { Name = "alzio3", Grade = 2, Scores = new List<int> { 56, 90, 45 } },
new Student { Name = "alzio4", Grade = 1, Scores = new List<int> { 60, 58, 96 } },
new Student { Name = "alzio5", Grade = 1, Scores = new List<int> { 89, 53, 71 } },
new Student { Name = "alzio6", Grade = 3, Scores = new List<int> { 99, 53, 80 } },
new Student { Name = "alzio7", Grade = 3, Scores = new List<int> { 77, 68, 45 } },
new Student { Name = "alzio8", Grade = 1, Scores = new List<int> { 82, 100, 63 } },
new Student { Name = "alzio9", Grade = 2, Scores = new List<int> { 99, 100, 97 } },
new Student { Name = "alzio0", Grade = 1, Scores = new List<int> { 36, 51, 44 } }
};
return students;
}
}
}
using CSharp;
List<Student> students = Student.GetStudents();
var orderByGrade = from student in students
group student by new
{
Grade = student.Grade,
Over80 = student.Scores.Average() > 80
} into g
orderby g.Key.Grade
select g;
foreach (var item in orderByGrade)
{
if (item.Key.Over80)
{
Console.WriteLine($"{item.Key.Grade}학년");
foreach (var s in item)
{
Console.WriteLine(s.Name);
}
Console.WriteLine();
}
}
->
1학년
alzio8
2학년
alzio2
alzio9
namespace CSharp
{
class Student
{
public string Name { get; set; }
public int Grade { get; set; }
public List<int> Scores;
public static List<Student> GetStudents()
{
List<Student> students = new()
{
new Student { Name = "alzio1", Grade = 1, Scores = new List<int> { 100, 50, 78 } },
new Student { Name = "alzio2", Grade = 2, Scores = new List<int> { 90, 90, 90 } },
new Student { Name = "alzio3", Grade = 2, Scores = new List<int> { 56, 90, 45 } },
new Student { Name = "alzio4", Grade = 1, Scores = new List<int> { 60, 58, 96 } },
new Student { Name = "alzio5", Grade = 1, Scores = new List<int> { 89, 53, 71 } },
new Student { Name = "alzio6", Grade = 3, Scores = new List<int> { 99, 53, 80 } },
new Student { Name = "alzio7", Grade = 3, Scores = new List<int> { 77, 68, 45 } },
new Student { Name = "alzio8", Grade = 1, Scores = new List<int> { 82, 100, 63 } },
new Student { Name = "alzio9", Grade = 2, Scores = new List<int> { 99, 100, 97 } },
new Student { Name = "alzio0", Grade = 1, Scores = new List<int> { 36, 51, 44 } }
};
return students;
}
}
}
List<Order> orders = Order.GetOrders();
var order = from o in orders
group o by o.Amount into g1
orderby g1.Key
from inner in (
from a in g1
group a by a.ProductID[0] into g2
orderby g2.Key
select g2
)
group inner by g1.Key;
foreach (var o in order)
{
Console.WriteLine($"구매수량 : {o.Key}개");
foreach (var i in o)
{
foreach (var item in i)
Console.WriteLine($"{item.ProductID} : {item.OrderNumber}");
Console.WriteLine();
}
}
->
구매수량 : 1개
A002 : A02155
A003 : A04605
C003 : A04628
구매수량 : 2개
B002 : A03285
B002 : A09350
C003 : A02845
구매수량 : 3개
A003 : A03702
B001 : A04760
D001 : A02962
구매수량 : 4개
B001 : A04722
C003 : A03125
// 상위 다섯개만 출력
using CSharp;
List<Student> students = Student.GetStudents();
var testResult = (from s in students
orderby s.Scores.Average() descending
select s).Take(5);
foreach (var item in testResult)
{
Console.WriteLine($"{item.Name} : {item.Scores.Average():N}점");
}
->
alzio9 : 98.67점
alzio2 : 90.00점
alzio8 : 81.67점
alzio6 : 77.33점
alzio1 : 76.00점
//TakeWhile
int[] numbers = { 6, 9, 10, 5, 8, 3, 7, 2, 13 };
var untilFalse = numbers.TakeWhile(n => n >= 5);
Console.WriteLine("숫자가 5보다 큰 경우 계속해서 반환");
foreach (var item in untilFalse)
{
Console.WriteLine(item);
}
->
숫자가 5보다 큰 경우 계속해서 반환
6
9
10
5
8
//Skip
int[] numbers = { 6, 9, 10, 5, 8, 3, 7, 2, 13 };
var after5num = numbers.Skip(5);
Console.WriteLine("앞의 5개를 제외한 나머지 숫자 : ");
foreach (var n in after5num)
{
Console.Write(n + " ");
}
->
앞의 5개를 제외한 나머지 숫자 :
3 7 2 13
//SkipWhile
int[] numbers = { 6, 8, 10, 5, 9, 3, 7, 2, 13 };
var fromFalse = numbers.SkipWhile(n => n % 2 == 0);
Console.WriteLine("2의 배수가 아닌것부터 출력하기");
foreach (var item in fromFalse)
{
Console.WriteLine(item);
}
->
2의 배수가 아닌것부터 출력하기
5
9
3
7
2
13
//union (합집합)
int[] setA = { 2, 5, 6, 7, 9, 2, 5, 5 };
int[] setB = { 1, 3, 5, 6, 9 };
var setC = setA.Union(setB);
foreach (var item in setC)
{
Console.WriteLine(item);
}
->
2
5
6
7
9
1
3
//Intersect (교집합)
int[] setA = { 2, 5, 6, 7, 9 };
int[] setB = { 1, 3, 5, 6, 9 };
var intersection = setA.Intersect(setB);
//var intersection = from a in setA
// from b in setB
// where a == b
// select a;
Console.WriteLine("A와 B의 교집합");
foreach (var item in intersection)
{
Console.Write(item + " ");
}
->
A와 B의 교집합
5 6 9
//Distint (중복제거)
int[] setA = { 2, 5, 6, 7, 9, 2, 5, 5 };
var setB = setA.Distinct();
foreach (var item in setB)
{
Console.WriteLine(item);
}
->
2
5
6
7
9
namespace Csharp
{
class Product
{
public string ID { get; set; }
public string Category { get; set; }
public int Price { get; set; } = 0;
public static List<Product> GetProducts()
{
List<Product> products = new()
{
new Product { ID = "A001", Category = "Clothes", Price = 4000 },
new Product { ID = "A002", Category = "Book", Price = 5000 },
new Product { ID = "A003", Category = "Food", Price = 7000 },
new Product { ID = "B001", Category = "Clothes", Price = 5000 },
new Product { ID = "B002", Category = "Food", Price = 25000 },
new Product { ID = "B003", Category = "Clothes", Price = 12000 },
new Product { ID = "C001", Category = "Food", Price = 5000 },
new Product { ID = "C002", Category = "Book", Price = 15000 },
new Product { ID = "C003", Category = "Clothes", Price = 8000 },
new Product { ID = "D001", Category = "Book", Price = 5000 },
};
return products;
}
}
}
//Distint _ Product.cs포함
using Csharp;
List<Product> products = Product.GetProducts();
var ordering = (from p in products
select p.Category).Distinct();
Console.WriteLine("카테고리별 이름 출력");
foreach (var item in ordering)
{
Console.WriteLine($"<{item}>");
}
->
카테고리별 이름 출력
<Clothes>
<Book>
<Food>
using Csharp;
List<Product> products = Product.GetProducts();
Product product = (from p in products
where p.Category == "Food"
select p)
.First();
Console.WriteLine(product.ID);
->
A003
////Range 와 Repeat
//1 부터 100개를 가지고온다
var under100 = Enumerable.Range(1, 100).ToArray();
foreach (var item in under100)
{
Console.Write(item + " ");
}
Console.WriteLine();
var rep_numbers = Enumerable.Repeat(5, 10);
foreach (var item in rep_numbers)
{
Console.Write(item + " ");
}
->
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
5 5 5 5 5 5 5 5 5 5
//Range 에 조건 추가하기
var oneTo100 = Enumerable.Range(1, 100);
var evenNum = from n in oneTo100
where n % 2 == 0
select n;
foreach (var item in evenNum)
{
Console.Write(item + " ");
}
Console.WriteLine();
->
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
//상호 조인
using ConsoleApp5;
string[] categories = {
"Food",
"Living",
"Book",
"Accessory"
};
List<Product> products = Product.GetProducts();
var query = from c in categories
join p in products on c equals p.Category
select (Category: c, p.ID);
foreach (var item in query)
{
Console.WriteLine(item.ID + " : " + item.Category);
}
->
A003 : Food
B002 : Food
C001 : Food
A002 : Book
C002 : Book
D001 : Book
string s = "Hello, alzio!";
File.WriteAllText("myFile.txt", s);
string s = File.ReadAllText("myFile.txt");
Console.WriteLine(s);
->
Hello, alzio!
string path = "alzio.txt";
StreamWriter stream = new(path);
stream.WriteLine("Hello Alzio!");
stream.Write("12345");
stream.Write("67890");
stream.Close();
string path = "alzio.txt";
StreamReader stream1 = new(path);
string line = stream1.ReadLine();
while(line != null)
{
Console.WriteLine(line);
line = stream1.ReadLine();
}
->
Hello Alzio!
1234567890
alzio.txt가 아닌 alzio.txat로 없는 path를 설정하여 예외를 처리해보겠습니다!
string path = "alzio.txat";
try
{
StreamReader stream1 = new(path);
string line = stream1.ReadLine();
while (line != null)
{
Console.WriteLine(line);
line = stream1.ReadLine();
}
}
catch (FileNotFoundException e)
{
Console.WriteLine("path 예외발생 -> path 명을 확인해주세요.");
}
catch (Exception e)
{
Console.WriteLine("기타 예외발생.");
}
->
path 예외발생 -> path 명을 확인해주세요.
string path = "alzio.txat";
StreamReader stream1 = new StreamReader(path);
string text = stream1.ReadToEnd();
Console.WriteLine(text);
string path = "fluit.txt";
string[] fruits = { "Apple", "Bananan", "Cherry" };
StreamWriter stream = new(path);
foreach (var item in fruits)
{
stream.WriteLine(item);
}
for (int i = 0; i < 10; i++)
{
stream.Write(i);
}
stream.Close();
Console.WriteLine(path + " 에 쓰기 완료.");
->
string path = "alzio.txt";
File.Move(path, "alzioNew.txt");
File.Copy("alzioNew.txt", "alzioCopy.txt");
string path = "C:\\alzio\\alzioNew.txt";
File.Copy("alzio.txt", path);
//alzio 폴더에 alzioNew.txt라는 이름으로 alzio.txt를 copy해라.
string path = "fruits.txt";
var lines = File.ReadLines(path).Where(s=>s.Length > 2);
foreach (var item in lines)
{
Console.WriteLine(item);
}
->
오레지
복숭아
코코넛
바나나