C# 在中继器内使用LINQ Join的结果

C# 在中继器内使用LINQ Join的结果,c#,asp.net,.net,linq,C#,Asp.net,.net,Linq,我有一个用LINQ编写的联接查询,它联接两个表 但是,我很难从两个表中访问属性,因为我使用主表作为中继器的“ItemType”声明,并且它没有显示新加入的列以供选择 我觉得这是因为我需要从结果中创建一个对象/类,但在我的一生中,我无法找到能够将结果从变量列表中放入一个对象的要求,在该对象中,中继器可以访问所有结果列和记录 代码隐藏文件 受保护的无效页面加载(对象发送方,事件参数e) { //从URL中获取CompanyID以解析到“查询公司详细信息”页面。 int.TryParse(Reques

我有一个用LINQ编写的联接查询,它联接两个表

但是,我很难从两个表中访问属性,因为我使用主表作为中继器的“ItemType”声明,并且它没有显示新加入的列以供选择

我觉得这是因为我需要从结果中创建一个对象/类,但在我的一生中,我无法找到能够将结果从变量列表中放入一个对象的要求,在该对象中,中继器可以访问所有结果列和记录

代码隐藏文件
受保护的无效页面加载(对象发送方,事件参数e)
{
//从URL中获取CompanyID以解析到“查询公司详细信息”页面。
int.TryParse(Request.QueryString[“CompanyID”],out int companyidur);
//创建从公司目录中获取公司详细信息的查询。
使用(BerkshireHaway.Models.BerkshireHawayEntities New wde=
新的BerkshireHaway.Models.BerkshireHawayEntitiesNew())
{
//我们也应该关注公司报告。
var报告=(来自wde.reports中的reportTable
在wde.report\u类别中加入reportCategory
关于reportTable.report\u categoryID
等于reportCategory.report\u categoryID
其中reportTable.companyID==companyIDURL
//这需要直接打印。我一直在
//进入阵列。
选择新的
{ 
reportsID=reportTable.reportID,
reportTypeDescription=reportCategory.description,
sortOrder=reportCategory.sort\u顺序
}).ToList();
ReportGrid.DataSource=报告;
ReportGrid.DataBind();
}
}
.ASPX

对象调试(除“匿名”类型外,看起来正确

正在引发错误消息 关于匿名类型的错误消息 无法将类型为“f_uAnonymousType3
3[System.Int32,System.String,System.Nullable
1[System.Int32]]的对象强制转换为类型为“BerkshireHaway.Models.report”


感谢您的帮助。我花了数小时试图找到答案-如果这是一个常见问题,我深表歉意。

您将中继器的
ItemType
指定为
BerkshireHaway.Models.report
,但在执行select时,您没有指定对象的类型,这就是它变得匿名的原因

相反,您可以这样做:

select new report { reportsID = reportTable.reportID, reportTypeDescription = reportCategory.description, sortOrder = reportCategory.sort_order})
其中,
新报告
中的“报告”应为
BerkshireHaway.Models.report
。换句话说,与中继器的
项目类型
指定的类型相同

旁注

顺便说一句,在C中,我们对类和属性名称使用
PascalCase
,而不是
camelCase
snake\u case


仅供参考。

您应该创建一个新的BerkshireHaway.Models.report,而不是使用匿名类型