본문 바로가기

C#38

[C#] List Insert, List 앞에 더하기 프로그래밍을 하다 보면 가끔 순서를 맞춰줘야 할 때가 있어서 리스트의 제일 앞에 값을 더해야 할 때가 있다. 이럴 때 나는 새로운 List를 만들어서 해결하곤 했다. var list = new List() {"b", "c", "d"}; var newList = new List(); newList.Add("a"); newList.AddRange(list); return newList; 가끔이지만, 매번 하면서도 이렇게 비효율적일 수 있나... 싶으면서도 찾지 못해 그대로 사용하고 있었다. 하지만 오늘 회사에서 코드 리뷰를 할 때 Insert 메소드를 배웠다. var list = new List() {"b", "c", "d"}; list.Add(0, "a"); return list; 0번째에 "a" 넣기.... 2022. 1. 4.
[C#] Class to ExpandoObject / dynamic class로 정의된 데이터에 하나의 정보를 더 넣을 일이 생겼는데, 하나하나 연결해주자니 코드의 양도 많아지고, 따라서 오류가 생길수도 있었다. 찾아보니 좋은 방법이 있어서 기록한다. var person = new Person { Id = 1, Name = "John Doe" }; var expando = new ExpandoObject(); var dictionary = (IDictionary)expando; foreach (var property in person.GetType().GetProperties()) dictionary.Add(property.Name, property.GetValue(person)); 이후 dictionary에 값을 추가해주면 된다. 참조: https://stackover.. 2021. 11. 9.
[C#] VM 원격 접속하기 및 파일 수정 빅데이터 과제 중, 또 한번 벽에 부딪혔다. 모든 CSV 파일을 수정해주어야 하는데 다운받아서 수정하고, 다시 업로드하기엔 너무 오래걸린다. 그래서 직접 연결하여 VM안에서 파일을 수정해주려고 했다. 다행히 C# 스터디에서 찾을 수 있었다. 댓글을 남기는 곳이 없어 남기지 못했지만 주소로 출처를 남긴다. 출처: http://www.csharpstudy.com/net/article/18-SFTP-%ED%8C%8C%EC%9D%BC-%EC%A0%84%EC%86%A1 SFTP 파일 전송 - C# 프로그래밍 배우기 (Learn C# Programming) SFTP 파일 전송 SFTP (SSH FTP) SFTP는 SSH File Transfer Protocol을 일컫는 것으로, SSH를 사용하여 서버에 파일을 전송.. 2021. 10. 6.
[C#] JSON, beautify 하기, 들여쓰기 var x = JsonConvert.SerializeObject(jsonString, Formatting.Indented); 위와 같이 시리얼라이즈 할 때, Formatting.Indented를 두번째 인자로 넣어주면 된다. 보통은 사용할 일이 없지만, 나는 파일의 크기를 늘려주기 위해 사용했다. 2021. 9. 7.
[C#] Azure DownloadToStream 오류 Blob type of the blob reference doesn't match blob type of the blob. 이라는 오류가 나와서 한참을 찾았다. 내가 만든 Blob이 아닌, 다른 개발자분께서 만드신 Blob이라서 Blob간의 종류 차이가 있었다. 해당 사항은 아래에서 볼 수 있다. https://docs.microsoft.com/ko-kr/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs 블록 blob, 추가 blob 및 페이지 blob 이해 - Azure Storage 블록 blob, 추가 blob 및 페이지 blob에 대 한 개요입니다. docs.microsoft.com Blob에는 총 3가.. 2021. 8. 23.
[C#] 대소문자 구분 없이 Contains 확인 개발 중, 에러를 잡아내는 부분에서 TEST가 들어가는 항목에 대해서는 에러를 잡아내지 않기로 했다. 따라서 모두 비교해줘야 하는데, 테스트 선박인 만큼 TEST를 쓸 수도 있고, test로 쓸수도 있고, Test로 쓸 수도 있다. 모두 ||로 처리하기엔 너무 많은 상황. 간단히 StringComparer.OrdinalIgnoreCase 속성으로 비교할 수 있다. if(data.Contains("TEST", StringComparison.OrdinalIgnoreCase)) { // 내용 } 2021. 7. 7.
[C#] string: startsWith, endsWith 시작, 끝 글자 여부 startsWith 이 글자로 시작하는지를 판단하는 메소드 https://docs.microsoft.com/ko-kr/dotnet/api/system.string.startswith?view=net-5.0 String.StartsWith 메서드 (System) 이 문자열 인스턴스가 지정한 문자로 시작하는지를 확인합니다.Determines whether this string instance starts with the specified character. docs.microsoft.com endsWith 이 글자로 끝나는지 판단하는 메소드 프로그램 확장자를 이름으로 판단하기에 좋다. (.zip, .xlsx...) https://docs.microsoft.com/ko-kr/dotnet/api/system.s.. 2021. 7. 5.
[C#] JSON 항목 삭제가 불가능 할 때 삭제 하는 방법 배경 C#에서 JSON의 항목을 삭제하던 중, 에러를 만났다. Cannot add or remove items from Newtonsoft.Json.Linq.JProperty. JProperty에서 항목을 추가하거나 삭제할 수 없다는 것. 이유 이유는 token["_id"]와 같이 접근했을 때, 우리는 값에 접근하게 된다. 즉 token["_id"]가 아닌 그 값에다가 remove를 해서 에러가 났던 것이다. 이런 JSON 구조에서는 Key 값과 Value 값이 있기 때문인데, Key를 삭제해줘야 하는데 Value를 삭제하려고 했다는 의미이다. 따라서 token["_id"].Parent.Remove()를 하면 된다. 출처 Getting the error “Cannot add or remove items .. 2021. 7. 1.
[C#] 요소가 null 일 때 처리 (?., ?[], ??, ??=) ?., ?[] 액세스 C# 백엔드로 직무를 바꾸며 정말 많은 종류의 에러가 null 값에서 멤버 액세스를 할 때 나오는 것을 보았다. 이 때, 회사에서 짜여있는 코드는 모두 if로 null검사를 해서 코드가 정말 길어지는 것을 볼 수 있었다. 단지 null 검사인데 이렇게 길어지는게 보기 싫긴 했지만 다른 방법이 없을거라고 생각하며 썼다. 그런데 C#에 대해 공부하며 또 알아온 것이 있으니 멤버 액세스 연산자 및 식이다. https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and- 멤버 액세스 연산자 및 식 - C# 참조 형식 멤.. 2021. 6. 8.