2017-12-22 12 views
0

私は銀行システムを開発しようとしています。 3つのテーブルレコードを1つのテーブルに結合しようとしています。しかし、問題は私がそれをコンパイルするときに私は次のエラーがあります。ConcatオペレータでLinqクエリに失敗しました

エラーCS1929 'IEnumerableを<>' 'の連結方式の' と最高の拡張メソッドのオーバーロードの定義が含まれていません 'Queryable.Concat <>(IQueryableを<>、IEnumerableを<は>')のIQueryable「タイプの受信機が必要です<>

ここにLinqクエリがあります。ここで

public string TranscationDetails(string Account_Number) 
     { 

      var accountNumber = int.Parse(Account_Number);//It could be better to use TryParse 
      using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities()) 
      { 
       var q1 = context.Current_Account_Deposit.Where(x => x.Account_Number == accountNumber).Select(w => new 
       { 
        w.Account_Number, 
        Deposit = (decimal?)null, 
        Withdrawal = (decimal?)w.Amount, 
        w.Date 
       }).ToList(); 

       var q2 = context.Current_Account_Withdraw.Select(d => new 
       { 
        d.Account_Number, 
        Deposit = (decimal?)d.Amount, 
        Withdrawal = (decimal?)null, 
        d.Date 
       }).OrderBy(r => r.Date).ToList(); 

       var q3 = context.Current_Account_Details.Select(e => new 
       { 
        //You should perform same anonymous type which you want to concat 
        Account_Number = e.Account_Number, 
        Deposit = (decimal?)e.Account_Balance, 
        Withdrawal = (decimal?)null, 
        e.Account_Fees 
       }).ToList(); 

       var inOut = q1.Concat(q2).Concat(q3).ToList();**//Error on this line** 



       var js = new System.Web.Script.Serialization.JavaScriptSerializer(); 

       return js.Serialize(inOut); // return JSON string 
      } 
     } 

ここでは、データベースのレコードenter image description here

はモデルクラスです。 enter image description here

+0

Lol 'concat' - you noob。あなたは 'join'を必要とします – Worthy7

+0

あなたはconcatの代わりに意味します。私はjoinを使うべきです – Mohammad

+0

実際には、あなたがしていることは狂っています。ダイナミックタイプを少なくとも使用できませんか?これらすべてのレコードを取得する適切なクラスを作成します。 あなたの '選択した新しい ' これはいくつかの問題を避けるでしょう。そして、あなたが望むものは、リストを連結するための 'AddRange'関数です。 – Worthy7

答えて

1
public string TranscationDetails(string Account_Number) 
     { 

      var accountNumber = int.Parse(Account_Number);//It could be better to use TryParse 
      List<AccountTransaction> accountTransactions = new List<AccountTransaction>(); 
      using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities()) 
      { 
       accountTransactions.AddRange(context.Current_Account_Deposit.Where(x => x.Account_Number == accountNumber).Select(w => new AccountTransaction 
       { 
        AccountNumber = w.Account_Number, 
        Deposit = 0, 
        Withdrawal = w.Amount, 
        Date = w.Date, 
        Fee = 0 
       }).ToList()); 

       accountTransactions.AddRange(context.Current_Account_Withdraw.Select(d => new AccountTransaction 
       { 
        AccountNumber = d.Account_Number, 
        Deposit = d.Amount, 
        Withdrawal = 0, 
        Date = d.Date, 
        Fee = 0 
       }).OrderBy(r => r.Date).ToList()); 

       accountTransactions.AddRange(context.Current_Account_Details.Select(e => new AccountTransaction 
       { 
        //You should perform same anonymous type which you want to concat 
        AccountNumber = e.Account_Number, 
        Deposit = e.Account_Balance, 
        Withdrawal = 0, 
        Date = null, 
        Fee = e.Account_Fees 
       }).ToList()); 

       var inOut = accountTransactions; 



       var js = new System.Web.Script.Serialization.JavaScriptSerializer(); 

       return js.Serialize(inOut); // return JSON string 
      } 
     } 

public class AccountTransaction 
{ 
    public int AccountNumber { get; set; } 
    public decimal Deposit { get; set; } 
    public decimal Withdrawal { get; set; } 
    public string Date{ get; set; } 
    public decimal Fee { get; set; } 
} 
+0

私はあなたが必要とするすべてを更新しました。 – Worthy7

+0

あなたの特性が何であるか教えてくれませんでした。 Current_Account_Deposit、Current_Account_Withdraw、Current_Account_Detailsの3つの異なるクラスをマージしようとしています。私は彼らが実際にそれらの日付を持っていないことを知らなかった、それに応じてクラスを調整します – Worthy7

+0

データベースの日付は様々な形式でどうしてですか?それはちょうど悪いです。これは学校の運動ですか? – Worthy7

関連する問題