지정된 캐스트가 유효하지 않습니다..LinqToSql 쿼리에서 "지정한 캐스트가 유효하지 않습니다."
OrderItemState는 enum입니다.
IEnumerable<OrderItemState> states = ...;
IEnumerable<byte> stateIds = Enumerable.Cast<byte>(states);
List<OrderEntry> entries =
(from m in dc.OrderItemMotions
where stateIds.Contains(m.OrderItemStateId)
select ...).ToList();
왜? 스택 트레이스의
부품 :
System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Collections.Generic.List
1..ctor에서 System.Linq.Enumerable.d__b1
1.MoveNext() at System.Linq.Enumerable.<OfTypeIterator>d__aa
1.MoveNext()에서
(
1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable
는 IEnumerable 1 소스)에 System.Data.Linq.SqlClient.QueryConverter.VisitInner (Expression sequence, Expression value) (System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression mc) ) 노드) at System.Data.Linq.SqlClient.Que System.Data.Linq.SqlClient.QueryConverter.VisitWhere (표현식 시퀀스, LambdaExpression 조건 자)의 System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression mc) at System.Data Linq.SqlClient.QueryConverter.VisitInner System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression의 MC)에 System.Data.Linq.SqlClient.QueryConverter.VisitWhere (식 서열 LambdaExpression 술어) 에서 (식 노드)에서 System.Data.Linq.SqlClient.QueryConverter.VisitInner (식 노드) System.Data.Linq.SqlClient.QueryConverter.VisitGroupBy (식 시퀀스, LambdaExpression keyLambda, LambdaExpression elemLambda, LambdaExpression resultSelector) at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression mc) (System.Data.Linq.SqlClient.QueryConverter.VisitInfo) 시스템에서, 식 innerSequence, System.Data.Linq.SqlClient.QueryConverter.VisitInner에서 System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression의 MC)에 LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector) (식 노드) .Data.Linq.SqlClient.QueryConverter.ConvertOuter (식 노드) 에서 System.Data.Linq.SqlClient.SqlProvider.BuildQuery (식 쿼리, SqlNodeAnnotations 주석) at System.Data.Linq.SqlClie nt.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (식 쿼리) System.Data.Linq.DataQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Collections.Generic.List
1..ctor에서 (1 소스는 IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable
)
다음의 경우
그것은 작동하지 않습니다 경우
그것은 작동합니다
이 코드를 가정 사실'바이트'? 그렇지 않다면 'double cast'(예 :'(byte) (int) enumvalue')를해야합니다. – leppie