c# – 调用方法“Boolean Equals”提供的参数数不正确
发布时间:2020-12-15 06:31:47 所属栏目:百科 来源:网络整理
导读:为什么我得到一个参数异常说我把错误的参数数传递给string.equals方法? 我通过了THREE的论点,应该是正确的.实际上它应该抛出编译时错误不是运行时… 你看到错误吗? var translations = await (from l in context.Languages join t in context.Translations
为什么我得到一个参数异常说我把错误的参数数传递给string.equals方法?
我通过了THREE的论点,应该是正确的.实际上它应该抛出编译时错误不是运行时… 你看到错误吗? var translations = await (from l in context.Languages join t in context.Translations on l.ISO639_ISO3166 equals t.ISO639_ISO3166 where string.Equals(l.ApplicationName,applicationName,StringComparison.InvariantCultureIgnoreCase) select new Translation { Key = t.Key,Text = t.Text }).ToListAsync(); UPDATE Test Name: GetTranslations Test FullName: TaaS.IntegrationTests.Tests.TranslationRepositoryTests.GetTranslations Test Source: C:testTaaS-WebApplicationTaaS.IntegrationTestsTestsTranslationRepositoryTests.cs : line 17 Test Outcome: Failed Test Duration: 0:00:00,0473367 Result StackTrace: at System.Linq.Expressions.Expression.GetMethodBasedBinaryOperator(ExpressionType binaryType,Expression left,Expression right,MethodInfo method,Boolean liftToNull) at System.Linq.Expressions.Expression.Equal(Expression left,Boolean liftToNull,MethodInfo method) at System.Data.Entity.Core.Objects.ELinq.LinqExpressionNormalizer.VisitMethodCall(MethodCallExpression m) at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) at System.Linq.Expressions.EntityExpressionVisitor.VisitLambda(LambdaExpression lambda) at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) at System.Linq.Expressions.EntityExpressionVisitor.VisitUnary(UnaryExpression u) at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) at System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original) at System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m) at System.Data.Entity.Core.Objects.ELinq.LinqExpressionNormalizer.VisitMethodCall(MethodCallExpression m) at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) at System.Linq.Expressions.EntityExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original) at System.Linq.Expressions.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression m) at System.Data.Entity.Core.Objects.ELinq.LinqExpressionNormalizer.VisitMethodCall(MethodCallExpression m) at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression exp) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter..ctor(Funcletizer funcletizer,Expression expression) at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.CreateExpressionConverter() at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassc.<GetResultsAsync>b__a() at System.Data.Entity.Core.Objects.ObjectContext.<ExecuteInTransactionAsync>d__3d`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<ExecuteAsyncImplementation>d__9`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Utilities.TaskExtensions.CultureAwaiter`1.GetResult() at System.Data.Entity.Core.Objects.ObjectQuery`1.<GetResultsAsync>d__e.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Utilities.TaskExtensions.CultureAwaiter`1.GetResult() at System.Data.Entity.Internal.LazyAsyncEnumerator`1.<FirstMoveNextAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Infrastructure.IDbAsyncEnumerableExtensions.<ForEachAsync>d__5`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at TaaS.Repository.TranslationRepository.<GetTranslationsAsync>d__2.MoveNext() in C:_REPOSITORIEStaas-applicationTaaS-WebApplicationTaaS.RepositoryTranslationRepository.cs:line 20 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at TaaS.IntegrationTests.Tests.TranslationRepositoryTests.GetTranslations() in C:_REPOSITORIEStaas-applicationTaaS-WebApplicationTaaS.IntegrationTestsTestsTranslationRepositoryTests.cs:line 45 Result Message: Test method TaaS.IntegrationTests.Tests.TranslationRepositoryTests.GetTranslations threw exception: System.ArgumentException: Incorrect number of arguments supplied for call to method 'Boolean Equals(System.String,System.String,System.StringComparison)' 解决方法
这是一个运行时错误,因为您可能会针对
Linq query provider运行,该版本需要从您的C#代码创建的C#编译器为
expression,并在运行时执行.提供商可能无法翻译此等量的重载.
尝试将您的Linq查询更改为: (from l in context.Languages join t in context.Translations on l.ISO639_ISO3166 equals t.ISO639_ISO3166).AsEnumerable() .Where(l => string.Equals(l.ApplicationName,StringComparison.InvariantCultureIgnoreCase)) .Select(new Translation { Key = t.Key,Text = t.Text }).ToListAsync(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |