안녕하세요 여러분,
도움이 필요합니다.
이 열에서 “-”, “0”, 비어 있는 값 및 열의 총 금액을 포함하는 마지막 행을 제외하도록 필터링해야 합니다.
제가 다음과 같은 접근 방식을 시도했지만, 예상대로 작동하지 않습니다.
안녕하세요 여러분,
도움이 필요합니다.
이 열에서 “-”, “0”, 비어 있는 값 및 열의 총 금액을 포함하는 마지막 행을 제외하도록 필터링해야 합니다.
제가 다음과 같은 접근 방식을 시도했지만, 예상대로 작동하지 않습니다.
조건 한정자를 "AND"가 아니라 "OR"로 변경해야 합니다.
또한 데이터를 읽을 때 데이터 열의 형식을 유지하고 있는지 아니면 무시하고 있는지를 고려해 볼 수 있습니다…
형식을 유지하고 있다면,
값 필터는 “-” 또는 “0” (여기서 0은 문자열로 읽힘)이어야 합니다.
그렇지 않으면
“-” 또는 0 (여기서 0은 정수로 처리됨)입니다.
SG.
안녕하세요 @dvojinovic
필터가 작동하지 않는 경우 LINQ를 사용할 수도 있습니다:
dt.AsEnumerable() _
.Take(dt.Rows.Count - 1) _
.Where(Function(r) Not String.IsNullOrWhiteSpace(r(“YourColumn”).ToString) _
AndAlso r(“YourColumn”).ToString.Trim <> “-” _
AndAlso r(“YourColumn”).ToString.Trim <> “0”) _
.CopyToDataTable()
@dvojinovic 값이 어떻게 읽히는지 보려면 데이터테이블 값을 붙여넣어주세요…
따라서 필터를 적용하는 F열은 문자열로 읽힐 수 있는 소수값입니다. “-” 값이 존재할 가능성이 있기 때문입니다. 따라서 소수값과 “-” 모두를 수용하기 위해, 데이터 열은 문자열 타입이어야 합니다.
제가 첫 번째 답변에서 제안한 내용을 시도해 보셨나요?
SG.
음… 내가 여기서 걱정하는 유일한 것은 열 제목에 있는 특수 문자/문자들입니다.
말해봐요, 그 열 제목이나 위치가 변하기는 하나요? 만약 그렇지 않다면, 차라리 열 이름보다는 열 참조를 사용하는 것이 좋습니다. 그리고 예, 필터에서 “그리고” 대신 “또는” 연산자를 사용하세요.
필터링된 테이블에서 마지막 행을 삭제합니다… 이렇게 하면 마지막 행이 항상 삭제됩니다..
하지만 마지막 행이 항상 이 항목 총계를 포함하도록 합니다…
그렇지 않다면, 초기 데이터 테이블 소스에서 데이터를 읽는 다른 방법을 사용해야 합니다.
다음과 같은 방법으로 이 작업을 수행할 수 있습니다 -
옵션 1 :
만약 총계가 항상 마지막에 있을 것이라고 확신한다면
옵션 2 :
필터링된 테이블 변수가 DtFilteredData라고 가정합니다.
C#
DtFilteredData.Rows[DtFilteredData.Rows.Count - 1].Delete();