2011-03-22 1 views
0

ObservableCollection을 통해 Linq Query에서 작업하고 있지만 binary를 byte []로 변환 할 수 없습니다.Linq에서 byte []를 Binary로 변환 할 수 없습니다.

내 코드는 다음과 같습니다.

q1 = (from a in Helper.db.AccountStatement 
         join b in Helper.db.BankAccount on a.BankAccId equals b.BankAccId 
         join c in Helper.db.BankBranch on b.BankBranchId equals c.BankBranchId 
         join d in Helper.db.Bank on c.BankId equals d.BankId 
         where b.AccType == stracctype && b.UserId == intuserid && a.ActiveStatement == true && b.ActiveAccount == true 
         group new { b, d, a } by new { b.BankAccId, d.Name, b.AccNumber } into h 
         select new BankSummaryDataGrid 
         { 
          BankAccId = h.Key.BankAccId, 
          byteLogo = Convert.FromBase64String(d.VectorLogo.ToString().Replace("\"", "")), 
          BankName = h.Key.Name, 
          AccountNumber = h.Key.AccNumber, 
          ClosingBalance = ((h.Where(p => p.a.TxtType == HMBL.WealthManager.WMCoAEntities.clsTransactionType.strDr).Sum(p => p.a.TxnAmt) == null ? 0.0 : h.Where(p => p.a.TxtType == HMBL.WealthManager.WMCoAEntities.clsTransactionType.strDr).Sum(p => p.a.TxnAmt)) - (h.Where(p => p.a.TxtType == HMBL.WealthManager.WMCoAEntities.clsTransactionType.strCr).Sum(p => p.a.TxnAmt) == null ? 0.0 : h.Where(p => p.a.TxtType == HMBL.WealthManager.WMCoAEntities.clsTransactionType.strCr).Sum(p => p.a.TxnAmt))) 
         }).ToList(); 

BankSummaryDataGrid는 ObservableCollection의 클래스입니다. 그래서 나는 이런 오류가 발생합니다.

쿼리를 구문 분석하는 동안 오류가 발생했습니다. [토큰 행 번호 = 19, 토큰 라인 오프셋 = 41, 오류가있는 토큰 = MAX]

byteLogo는 [!] 바이트 유형입니다.

System.Data.SqlServerCe.SqlCeException이 잡혔다 메시지 = 쿼리를 구문 분석하는 동안 오류가 발생했습니다. [토큰 행 번호 = 19, 광고 토큰 오프셋 = 41, 토큰 오류 = MAX] = 소스 SQL 서버 컴팩트 ADO.NET 데이터 공급자 HRESULT = -2147217900 NativeError = 25,501 스택 트레이스 :에 System.Data.SqlServerCe에서 . System.Data.Common.DbCommand에서 System.Data.SqlServerCe.SqlCeCommand.ExecuteDbDataReader (CommandBehavior를 동작) 에서 System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand에서 SqlCeCommand.CompileQueryPlan() (CommandBehavior를 행동, 문자열 방법, ResultSetOptions 옵션) .ExecuteReader() at System.Data.Linq.SqlClient.SqlProvider.Execute (식 쿼리, QueryInfo queryInfo, IObjectReaderFactory 팩터 리, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object lastResult) at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (식 쿼리, QueryInfo [] queryInfos, IObjectReaderFactory 팩토리, Object [] userArguments, ICompiledSubQuery [] subQueries) at System.Data.Linq.SqlClient.SqlProvider.System.Data .Linq.Provider.IProvider.Execute (식 쿼리) (System.Data.Linq.DataQuery에서) 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Collections.Generic.List 1. 전자 메일 :(소스 1 개) (전자 메일 : int32 intuserid, String stracctype)의 HMCL.Bank.GetBankSummary MoneyCubePlus \ 소스 \ 폴더 2011 작업 \ HMBL \ TransactionManager에 \ Transaction.cs : 라인 993 의 InnerException :

감사합니다 ...!

+0

당신은 pr 생성 된 SQL이 어떻게 보이는지 데이터베이스를 손상 시켰습니까? 게시 할 수 있습니까? – Xhalent

+0

예 안녕하십니까, 전체 오류 로그를 추가했습니다. –

답변

1

나는 문제는 당신이 일단 내가 다음이

byteLogo = Convert.FromBase64String(d.VectorLogo.ToString().Replace("\"", "")), 

으로

vectorLogo= d.VectorLogo 

을 변경 한 것

을 SQL로 LINQ가 지원하지 않는 방법을 사용하고 있음을 믿습니다 로컬로 목록에 내가 linq 귀하의 바이트 배열 개체로 변환 할 것이라고

+0

당신이 설명하는대로 내 쿼리 결과를 볼 수 있습니다. 나는 바이트 바이너리 convet 싶어요 [] FromBase64String 사용하고 있는데 이것은 Lnq에서 지원되지 않습니다. 그게 내가 해결할 수있는 다른 방법이 있다는 것을 안다. –

+1

@Jitendra 필자는 linq 문을 사용하지 않고 linq 문을 실행 한 후이를 바이트 []로 변환 할 것을 제안했다. – Aducci

관련 문제