Specified cast is not valid.
OrderItemState is 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();
Why?
Part of StackTrace:
at System.Linq.Enumerable.d__b1
1.MoveNext()1.MoveNext()
at System.Linq.Enumerable.<OfTypeIterator>d__aa
at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()1..ctor(IEnumerable
at System.Collections.Generic.List1 collection)1 source)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
at System.Data.Linq.SqlClient.QueryConverter.VisitContains(Expression sequence, Expression value)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.Visit(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitWhere(Expression sequence, LambdaExpression predicate)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitWhere(Expression sequence, LambdaExpression predicate)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitGroupBy(Expression sequence, LambdaExpression keyLambda, LambdaExpression elemLambda, LambdaExpression resultSelector)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitJoin(Expression outerSequence, Expression innerSequence, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node)
at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()1..ctor(IEnumerable
at System.Collections.Generic.List1 collection)1 source)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
You can’t cast an
enumto abytewithout data loss so the cast will fail (enumis anintunder the hood).But you can define an
enumto use abyteunder-the-hood if you only want values in the range 0-255 using:See here: http://msdn.microsoft.com/en-us/library/sbbt4032.aspx