Programming/C#22 [C#] Linq로 INNER JOIN하기 SQL에서 두 테이블을 JOIN 해서 가져오기도 하지만 C#에서 각가의 두 테이블을 Linq를 활용해서 JOIN 할 수 있다. List tableA = new List(); List tableB = new List(); var join1 = tableA.Join( tableB, a => a.Code, b => b.Code, (a, b) => new { b.ColumnB, a.ColumnA }); var join2 = from a in tableA join b in tableB on a.Code equals b.Code select new { b.ColumnB, a.ColumnA }; 위 두 가지 방식으로 사용할 수 있는데 join1은 Linq query syntax, join2는 Linq method c.. 2022. 8. 24. C# Linq 시각화 C# Linq 시각화해서 설명한 좋은 아티클 Zip(), Intersect() 같은 아직 생소한 Method도 있었네. https://steven-giesel.com/blogPost/d65c5411-a69b-489f-b73f-18ce0ed8678d LINQ explained with sketches Often times it is easier to have a nice illustration at hand, which explains you things the easy way. So let's do this for a lot of LINQ operations like Where, Select and friends. Of course a small explanation will be attached as .. 2022. 8. 10. C# Class 내부 구성 요소의 순서 팀에서 Resharper와 StyleCop을 이용해서 코딩 컨벤션을 맞추고 있다. 컨벤션 규칙을 정하다가 C# Class 내부 구성 요소는 어떤 순서로 배치해야 하는지 궁금해졌다. StyleCop에서 정한 C# Class 구성요소의 순서는 다음과 같다. SA1201: Ordering Rules Fields Constructors Finalizers (Destructors) Delegates Events Enums Interfaces Properties Indexers Methods Structs Classes* 📝 For ordering purposes, C# 9 records are treated as classes. Constructor 다음에 Property가 있어야 하는 것은 그동안 모르고 있었다. 2022. 6. 22. C# string Contains() Linq나 문자열에서 원하는 문자열을 찾을 때 사용하는 Contains() 영어의 경우 대소문자 구분이 있다. String.Contains()에서는 대소문자 구분이 불가능해서 String.IndexOf(String, StringComparison) overload를 사용하고는 했다. 하지만, .NET core 에서는 StringComparison 파라미터를 지원한다. https://docs.microsoft.com/en-us/dotnet/api/system.string.contains?view=net-6.0#system-string-contains(system-string-system-stringcomparison) string a = "abc"; string b = "C"; // False Consol.. 2022. 5. 3. [C#] Disposable 패턴 요즘 메모리를 효율적으로 사용하는 작업을 진행하고 있다. Visual Studio의 diagnostic tools로 메모리 사용량을 확인할 수 있다. IDisposable 인터페이스를 통해 메모리를 낮추는 데 성공했다(ID: 2). (그런데 정작 개발 서버에서는 잘 동작하지 않아서 GC.Collect() 사용을 고민 중이다.) Dispose 패턴에서는 반드시 finalizer를 구현해야 한다. => 사용자가 Dispose() 메서드를 올바르게 호출할 것이라고 믿으면 안 됨. IDisposable.Dispose() 는 반드시 다음과 같은 작업을 수행해야 한다. 모든 비관리 리소스를 정리한다. 모든 관리 리소스를 정리한다. 객체가 이미 정리되었음을 나타내기 위한 플래그 설정. finalizer 호출 회피(G.. 2022. 2. 4. [C#] List<T>를 ArrayList로 변환하기 이것도 알고나면 간단한데 ArrayList를 잘 사용하지 않다보니 잘 모르고 있었다. Constructor를 활용하면 간단하다. ArrayList arrayList = new ArrayList(list); 2021. 9. 25. C# 10 Top 5 feature 아침에 메일을 보니 얼마 전 가입한 .NET DEV 포럼에서 메일이 와있었다. .NET DEV 포럼의 마지막 방문 이후로 업로드된 주요 포스트를 메일로 보내주는 서비스였다. 정말 아이디어 좋다. 최고!👍 .NET DEV 포럼에서 본 C# 10의 Top 5 feature에 관한 글이다. 예제가 포함되어 있어서 더 보기 좋다. 파라미터 자동 null 체크 required keyword(인스턴스 생성 시 required property 설정) field keyword(private string _something 필요 없음) global using namespace에 중괄호 불필요 5개 기능 모두 기대가 된다. 2021. 7. 13. [c#] DataTable Clone vs Copy DataTable Clone()으로 복사했더니 DataRow가 하나도 없었다. 문서를 확인해보니 Copy()를 사용하라고 한다. DataTable의 구조를 복사하려면 Clone()을 사용하고, DataRow까지 복사하기 위해서는 Copy()를 사용하자! Clone creates a new DataTable with the same structure as the original DataTable, but does not copy any data (the new DataTable will not contain any DataRows). To copy both the structure and data into a new DataTable, use Copy. 참고 DataTable Clone 2021. 7. 8. [C#] DataRow Clone하기 DataTable을 사용하다 보면 DataRow를 해야 할 때가 있다. var firstRow = dataTable.Rows[0]; Table.Rows.Add(firstRow); 이렇게 사용하면 아래 에러가 발생한다. This row already belongs to this table. dataTable의 ImportRow() Method를 이용하면 된다. var firstRow = dataTable.Rows[0]; dataTable.ImportRow(firstRow); .Net fiddle에서 확인 가능하다. https://dotnetfiddle.net/W9h7bj 2021. 6. 29. 이전 1 2 3 다음