2017-12-12 31 views
-1

저는 linq을 처음 사용합니다. 다음 표에서 해결책을 찾고 있습니다. 는 여기에 두 개의 새 열 CreditDebit을 만들고 TransType 조건에 따라 데이터를 표시 할 할 조건으로 TransType를 사용하여 내 테이블 구조 enter image description hereLINQ에서 조건을 사용하여 선택 결과를 재정렬하는 방법

입니다.

다음 스크린 샷과 같습니다. enter image description here

2 개의 스크린 샷에 따라 결과를 얻으려면 LINQ select 쿼리를 제안 해주십시오. 감사합니다.

+0

시도'Where' 방법 :'var에 크레딧 = transactions.Where (t => t.TransType == "신용")하며 접근하는 방법에는 여러 가지가 있기 때문에' –

+1

귀하의 질문은 너무 광범위 문제 및 사용 방법은 제공하지 않은 정보 (좋은 [mcve] 포함)에 따라 다릅니다. 그러나'Select()'를 사용하여'CreditType'과'Debit' 속성을 포함하는 새로운 요소 유형으로 투영하고,'TransType' 열에 따라 값을 설정할 수 있습니다. 그래서 당신이 그것을 시도하는 것이 좋습니다. (나는 많은 회계 상황에서'TransType' 칼럼이 없다는 것을 주목할 것입니다 ... 신용/차변은 단순히 값의 부호로 표시됩니다) –

답변

0

감사합니다.

from o in erp.CompAccTransactions 
            where o.CompanyId == cid 
            select new 
            { 
             o.TransId, 
             o.TransDate, 
             o.TransType, 
             o.TransDesc, 
             o.PaymentRef, 
             Credit = o.TransType == "Credit" ? o.Amount : (o.TransType == "Debit" ? (decimal?)null : (decimal?)null), 
             Debit = o.TransType == "Debit" ? o.Amount : (o.TransType == "Credit" ? (decimal?)null : (decimal?)null), 
             o.ClearBalance 

            }); 
0

두 개의 추가 열을 얻으려면 사용자 지정 클래스를 직접 만들거나 즉석에서 익명 클래스를 생성 할 수 있습니다 (데이터 유형이 dynamic 인 경우 언제든지 전달할 수 있음). 이 코드는 원칙을 보여줍니다. 이 경우, 나는 익명 클래스를 사용, 그래서 나는 원래 개체의 모든 필드를 반복 플러스 두 개의 여분의 열을 추가 할 수 있습니다 제안

static void Main(string[] args) 
{ 
    var list = new List<MyObj> 
    { 
     new MyObj { TransType = "Credit", PaymentMethod = 1, Amount = 1000 }, 
     new MyObj { TransType = "Debit", PaymentMethod = 2, Amount = 2000 }, 
     new MyObj { TransType = "Debit", PaymentMethod = 1, Amount = 4000 }, 
     new MyObj { TransType = "Credit", PaymentMethod = 3, Amount = 3000 } 
    }; 

    var filtered = from o in list 
        where o.TransType == "Credit" 
        select new 
        { 
         o.TransType, 
         o.PaymentMethod, 
         o.Amount, 
         Credit = "<VALUE>", 
         Debit = "<VALUE>" 
        }; 
} 
class MyObj 
{ 
    public string TransType { get; set; } 
    public int PaymentMethod { get; set; } 
    public int Amount { get; set; } 
}