2017-12-12 5 views
-1

私はlinqを使い慣れています。次の表の解決策を探しています。ここ は私のテーブル構造は、私は2つの新しい列CreditDebitを作成したいとTransType条件に従ってデータを表示したい条件としてTransTypeを使用することにより enter image description hereLINQの条件を使用して選択結果を並べ替える方法

です。

次のスクリーンショットのように。 enter image description here

あなたはLINQの選択クエリを提案して、2 screenshotに従って結果を得ることができますか? ありがとうございます。

+0

'WHERE'方法試してみてください:' VARクレジット= transactions.Where(トン=> t.TransType == "クレジット"); ' –

+1

アプローチにはさまざまな方法があるのであなたの質問は、広すぎます問題は、あなたが提供していない情報(良い[mcve]を含む)によって決まります。しかし、 'Select()'を使って 'Credit'と' 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

2つの余分な列を取得するには、独自のカスタムクラスを作成するか、匿名クラスを即座に生成することができます(dynamicデータ型を介していつでも渡すことができます)。コードは原則を示しています。この場合、私は匿名クラスを使用するので、私は元のオブジェクト内のすべてのフィールドを繰り返しプラス2つの余分な列を追加する必要があります。提案のため

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; } 
} 
関連する問題