2017-12-22 18 views
0

나는 뱅킹 시스템을 개발하려고합니다. 세 개의 테이블 레코드를 단일 테이블에 조인하려고했습니다. 하지만 문제는 내가 컴파일 할 때 나는 다음과 같은 오류가있다.Concat 연산자로 Linq 쿼리를 수행하지 못했습니다.

오류 CS1929 '는 IEnumerable <>는' 'CONCAT'에 대한 정의와 '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

사실, 당신이하고있는 일은 미친 짓입니다. 동적 유형을 적어도 사용할 수 있습니까? 이러한 모든 레코드가 들어가기를 원하는 적절한 클래스를 만듭니다. 다음에'select new ' 몇 가지 문제를 피할 수 있습니다. 그러면 원하는 것은리스트를 연결하는 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