返回匿名类型的linq查询在执行时会引发以下错误。
The type '<>f__AnonymousType9<Name,Value>' exists in both
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
使用JetBrains dotPeek
我能够发现有两个编译器生成的类发生冲突。
Customer.CustomerContext.dll
internal sealed class <>f__AnonymousType9<<PayrollSiteID>j__TPar, <IsActive>j__TPar>
Customer.CustomerWeb.Presentation.dll
internal sealed class <>f__AnonymousType9<<Name>j__TPar, <Value>j__TPar>
两个生成的类都在根namespace
中。有什么方法可以将Anonymous Type classes
指向每个程序集上的特定命名空间吗?简单的解决方法是向其中一个匿名查询添加第三个变量,但这更像是一个黑客攻击。
答案 0 :(得分:1)
我认为您需要类似下面的内容,在命名空间中添加using语句,以便在名称解析中为其提供首选项:
using Customer.CustomerContext;
namespace yourNameSpace
{
using Customer.CustomerWeb.Presentation; //Where f__AnonymousType9<Name,Value> exists
}
答案 1 :(得分:0)
来自评论
它会产生StackOverFlow。为了获得
The type '<>f__AnonymousType9<Name,Value>' exists in both
,我必须先删除一个断点 崩溃。检查变量是我收到该消息的时间
'Customer.CustomerWeb.Presentation.dll' and 'Customer.CustomerContext.dll'
命名空间冲突不是你的问题,它导致调试器在尝试评估变量时爆炸,但我不知道它是如何导致StackOverflow的。您需要a)仔细查看linq以找出意外递归的位置,或者b)发布堆栈跟踪的一部分,以便我们可以帮助您跟踪它。