Guten Morgen,
sagt mal ich wie kann ich in einem LINQ-Statement den Operater und die Bedingung aus einer Variable auslesen/verwenden?
Meine Daten zeigen eine Auflistung von Artikeln mit deren Lagerbeständen, etc... an.
Mein Ziel ist, dass der Benutzer die Abfrage beeinflussen kann, ab wann der Artikel verfügbar ist.
Beispiele: > 0 oder >= 0 oder > 1 oder ...
Genau diese Konstellationen wollte ich mit einer systemübergreifenden Variable festlegen, also in der INI-Datei speichern und entsprechend bei der LINQ-Abfrage ansteuern.
Durch Googlen kam der Tipp mit LET, aber funktioniert genauso wenig, als wenn ich die Bedingung selber in die IF-Clause schreibe.
Erhalte dabei aber folgende Fehlermeldung:
sagt mal ich wie kann ich in einem LINQ-Statement den Operater und die Bedingung aus einer Variable auslesen/verwenden?
Meine Daten zeigen eine Auflistung von Artikeln mit deren Lagerbeständen, etc... an.
Mein Ziel ist, dass der Benutzer die Abfrage beeinflussen kann, ab wann der Artikel verfügbar ist.
Beispiele: > 0 oder >= 0 oder > 1 oder ...
Genau diese Konstellationen wollte ich mit einer systemübergreifenden Variable festlegen, also in der INI-Datei speichern und entsprechend bei der LINQ-Abfrage ansteuern.
Durch Googlen kam der Tipp mit LET, aber funktioniert genauso wenig, als wenn ich die Bedingung selber in die IF-Clause schreibe.
Quellcode
- Dim AnzeigeVormerkungen = From VM In Kontext.Vormerkungen
- Let Verfügbar = (VM.ArtikelObjekt.VFG & Variablen.VerfuegbarkeitOperator & Variablen.VerfuegbarkeitMenge)
- Select VM.ArtikelObjekt.ARTANR, VM.ArtikelObjekt.OE, VM.ArtikelObjekt.EAN, VM.Aufgabe, Vollständig = If(Verfügbar, "Ja", "Nein"),
- VM.Prio, VM.ArtikelObjekt.BildDatum, Hinweis = ""
Erhalte dabei aber folgende Fehlermeldung:
Quellcode
- A valid ResultType could not be inferred from the ResultTypes of the specified 'Then' expressions.
- bei System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateCase(IEnumerable`1 whenExpressions, IEnumerable`1 thenExpressions, DbExpression elseExpression, DbExpressionList& validWhens, DbExpressionList& validThens)
- bei System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder.DbExpressionBuilder.Case(IEnumerable`1 whenExpressions, IEnumerable`1 thenExpressions, DbExpression elseExpression)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.CoalesceTranslator.TranslateBinary(ExpressionConverter parent, DbExpression left, DbExpression right, BinaryExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.BinaryTranslator.TypedTranslate(ExpressionConverter parent, BinaryExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.StringConcatTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.UnaryTranslator.TypedTranslate(ExpressionConverter parent, UnaryExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ConditionalTranslator.TypedTranslate(ExpressionConverter parent, ConditionalExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.NewTranslator.TypedTranslate(ExpressionConverter parent, NewExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
- bei System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert()
- bei System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
- bei System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__a()
- bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
- bei System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__9()
- bei System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
- bei System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
- bei System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
- bei System.Lazy`1.CreateValue()
- bei System.Lazy`1.LazyInitValue()
- bei System.Lazy`1.get_Value()
- bei System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
- bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
- bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)