1
我有以下代码:列表复制到的SpreadsheetGear Irange
using (CPASEntities ctx = new CPASEntities())
{
IWorksheet ws = wb.Worksheets[0];
ws.Name = "Summary";
var tsm = (from x in ctx.tblTimesheetMasters
where x.TSID == TSID
select new
{
TimesheetID = x.TSID,
Comments = x.TSComments,
Vendor = x.tblVendor.Vendor_Name,
StartDate = x.TSStartDate,
Author = x.TSAuthor,
Approver = x.TSApprover,
Override_Approver = x.TSOverrideApprover,
Status = x.tblTimesheetStatu.TSStatusDesc
}
).ToList();
SpreadsheetGear.IRange range = ws.Cells["A1"];
// I want to copy the entire tsm list to this range, including headings.
}
随着评论的状态,我希望把他们整个列表到WS工作起始于A1。如果使用不同的结构更容易,我会包含代码。 FWIW,将只有一个条目... TSID是主键。如果这很重要,我当然可以使用.FirstorDefault()构造。我认为这不重要。
该问题与范围的定义无关。如果您使用我的定义(如图所示)(并从SSG网站复制...),使用IRange.copyfromDatatable方法一切正常。我想避免从EF设置一个数据表,因为这些结构是相似的,但看起来就像我必须做的。这比你提出的要容易得多(这当然会起作用....)谢谢。 – 2013-03-21 12:46:19
对,如果IRange有copyFromList方法,那将会很好。另一种方法是使用ToDataTable方法将列表转换为数据表,如下所述:http://stackoverflow.com/questions/564366/convert-generic-list-enumerable-to-datatable。但是,这种方法与我给出的答案类似。 – Daniel 2013-03-21 16:21:54
是的,我放弃了并使用了一个SQL源的DataTable。当我开始这个ASP.NET旅程时,我觉得我最好的策略是使用最新的技术,因为在我漫长的学习过程中它们将成为主流。那么,学习曲线确实很长,但技术(EF)显示出许多极端青春和有限接受的迹象。我学到了很多关于EF的知识,包括很多方法......大声笑。谢谢你的帮助.... – 2013-03-21 20:04:37