C# 是否访问IQueryable/System.Collections.Generic.List的内容?

C# 是否访问IQueryable/System.Collections.Generic.List的内容?,c#,asp.net-mvc,linq,export-to-excel,epplus,C#,Asp.net Mvc,Linq,Export To Excel,Epplus,我有一个使用实体框架开发的MVC5/代码优先应用程序。目前,我正在尝试添加导出到Excel功能,以动态输出用户选择的INV_资产模型属性。使用ePlus库和Linq.Dynamic,我已经成功地将数据导出到excel,但并不完全正确 我已经获得了要导出到第1行的标题,但仍然难以获得要导出的数据。目前,我所选字段的数据都会显示出来,但每个值都会作为一个长字符串导出到a列中它自己的行中。例如,如果我选择以下字段状态、ip_地址、mac_地址、备注、所有者、成本、po_编号和描述,我会得到以下信息:

我有一个使用实体框架开发的MVC5/代码优先应用程序。目前,我正在尝试添加导出到Excel功能,以动态输出用户选择的INV_资产模型属性。使用ePlus库和Linq.Dynamic,我已经成功地将数据导出到excel,但并不完全正确

我已经获得了要导出到第1行的标题,但仍然难以获得要导出的数据。目前,我所选字段的数据都会显示出来,但每个值都会作为一个长字符串导出到a列中它自己的行中。例如,如果我选择以下字段状态、ip_地址、mac_地址、备注、所有者、成本、po_编号和描述,我会得到以下信息:

第1行:[状态][ip地址][mac地址][注释][所有者][成本][采购订单编号][说明]

第2行:[{Status=SIGNEDOUT,ip_address=10.10.121.25,mac_address=10.10.134.11,note=,owner=John Smith,cost=35.00,po_number=G348,description=这是对项目的描述。]]]

以下是我当前在Excel中获得的输出的可视化视图:

当我在VS2013中将IQueryable变量selectStatement设置为监视变量时,我可以深入到内容中,但我不知道如何在代码中单独访问这些内容:

目前,我使用IQueryable并通过EPPlus LoadFromCollection方法将其加载到Excel中,但如果我能够找到如何访问IQueryable的单个内容,那么我可以设置一些计数器和循环,以适当地设置所需的单元格,而不是将所有内容都转储到ColumnA中

有人能帮忙吗?我的ExportController的完整代码如下:


在非标题单元格中获得的输出:

状态=签名输出,ip地址=10.10.121.25,mac地址=10.10.134.11,注释=,所有者=约翰·史密斯,成本=35.00,采购订单号=G348,描述=这是项目的描述

看起来像表示为property=value的对象,用逗号分隔。我猜对象的ToString方法被重写并创建该输出

因为您正在将强类型对象强制转换为System.Object

selectStatement.Cast<object>()
这里有一篇文章展示了LoadFromCollection的正确用法

更新

错误

方法“OfficeOpenXml.ExcelRangeBase.LoadFromCollectionSystem.Collection.Generic.IE”的类型参数‌​无法从用法中推断出可计算的布尔值。尝试显式指定类型参数

告诉您需要指定查询返回的实际类型,而不是指定对象


@埃里克,好吗?一旦我通过这行代码并在即时窗口中检查dbg,我会得到一个14的计数,其中每个属性都列出了0-13。添加了一个正确的答案。我想我明白你的意思,但当我删除强制转换时,会得到ws.Cells[A2]。LoadFromCollectionselectStatement,true;无法从用法推断VS2013中作为方法“OfficeOpenXml.ExcelRangeBase.LoadFromCollectionSystem.Collection.Generic.IEnumerable,bool”的类型参数的标志。尝试显式指定类型参数….?请参阅我的更新。根据您的示例代码,我认为DynamicColumns是正确的数据类型,但不确定。嗯。。。我不确定。当我尝试ws.Cells[A2].LoadFromCollectionselectStatement.Cast时,为true;我在执行期间收到:System.Core.dll中发生“System.InvalidCastException”类型的异常,但未在用户代码中处理。其他信息:无法将“DynamicClass1”类型的对象强制转换为“InventoryTracker.Controller.DynamicColumns”类型。然而,强制转换为DynamicClass执行的代码与强制转换为对象的代码相同,所有值都经过了转换;但作为a列中的一个长字符串,我取得了一些进展,不知道您是否可以看看另一个问题?我回答了另一个问题。
selectStatement.Cast<object>()
ws.Cells["A2"].LoadFromCollection(selectStatement, true);
ws.Cells["A2"].LoadFromCollection(selectStatement.Cast<DynamicColumns>(), true);