【发布时间】:2023-03-20 16:27:01
【问题描述】:
嗨,我有这个链接句子我做错了什么?
供参考。这是调试后的错误。
Dim categories = Aggregate pgmAccess In rvdDB.PgmAccesses
Where pgmAccess.OperatorID = RData.UserName
Join menuDef In rvdDB.MenuDefs On menuDef.ProgramName Equals pgmAccess.Program
Order By menuDef.MenuID
Select menuDef.ProgramDescription
Distinct Into ToList()
错误信息
“System.NotSupportedException”类型的异常发生在 System.Data.Linq.dll 但未在用户代码中处理
附加信息:方法'System.Object CompareObjectEqual(System.Object, System.Object, Boolean)' 没有 支持转换为 SQL。
__
“/”应用程序中的服务器错误。
方法'System.Object CompareObjectEqual(System.Object, System.Object, Boolean)' 不支持对 SQL 的转换。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.NotSupportedException:方法'System.Object CompareObjectEqual(System.Object, System.Object, Boolean)' 没有 支持转换为 SQL。
来源错误:
第 16 行:将 rvdDB 调暗为新的 RVDDDataClassesDataContext 第 17 行: 第 18 行:暗淡类别 = 聚合 pgmAccess In rvdDB.PgmAccesses 其中 pgmAccess.OperatorID = RData.UserName 加入 menuDef 在 rvdDB.MenuDefs 上 menuDef.ProgramName 等于 pgmAccess.Program 按 menuDef.MenuID 顺序选择 menuDef.ProgramDescription Distinct Into ToList() 第 19 行:第 20 行:
categories.ForEach(AddressOf MakeButton)源文件:C:\Users\pieterv\Documents\Visual Studio 2013\Projects\RVDMenu\RVDMenu\MenuFrm.aspx.vb 行:18
堆栈跟踪:
[NotSupportedException:方法'System.Object CompareObjectEqual(System.Object, System.Object, Boolean)' 没有 支持转换为 SQL。]
System.Data.Linq.SqlClient.Visitor.VisitMethodCall(SqlMethodCall mc) +576409 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +2146 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression 经验)+8
System.Data.Linq.SqlClient.Visitor.VisitMethodCall(SqlMethodCall mc) +115 System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +2146 System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression 经验)+8
System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect 选择)+46
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect 选择) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点)+1024
System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) +13
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +457
System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源)+8 System.Data.Linq.SqlClient.SqlVisitor.VisitJoin(SqlJoin join) +21
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +979
System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源)+8 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect 选择)+27
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect 选择) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点)+1024
System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) +13
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +457
System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源)+8 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect 选择)+27
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect 选择) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点)+1024
System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) +13
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +457
System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源)+8 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect 选择)+27
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect 选择) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点)+1024
System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) +13
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) +457
System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源)+8 System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect 选择)+27
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect 选择) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点)+1024
System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape,类型 resultType,SqlNode 节点,ReadOnlyCollection1 parentParameters, SqlNodeAnnotations annotations) +5881.System.Collections.Generic.IEnumerable.GetEnumerator() +35 System.Collections.Generic.List
System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) +155
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +132
System.Data.Linq.DataQuery1..ctor(IEnumerable1 集合)+7675130 System.Linq.Enumerable.ToList(IEnumerable`1 来源)+61 RVDMenu.MenuFrm.LoadCategories() 在 C:\Users\pieterv\Documents\Visual Studio 2013\项目\RVDMenu\RVDMenu\MenuFrm.aspx.vb:18
RVDMenu.MenuFrm.Page_Load(Object sender, EventArgs e) in C:\Users\pieterv\Documents\Visual Studio 2013\Projects\RVDMenu\RVDMenu\MenuFrm.aspx.vb:12
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +627
【问题讨论】:
-
你知道该行的哪一部分引发了异常吗?还有你在比较对象的地方,它们是不是同一种类型,SQL 知道如何比较它们吗?
-
对不起,我对 linq 很陌生
-
OperatorID 和 UserName 有哪些类型?
-
运算符是来自表的字符串。用户名是一个变量
-
RData.UserName 也是字符串?还有 enuDef.ProgramName 和 pgmAccess.Program 的类型是什么?