我正在修改一些工作代码,将一些代码转换为使用LINQ调用存储过程。它使C#看起来更整洁。
此当前代码调用存储过程来创建数据表,然后将其发送到openxml以创建要下载的Excel电子表格。这种方法很有效。
我想修改它以从LINQ调用SP。 我从LINQ调用存储过程来获取列表。但是,openxml需要一个DataTable。
我的代码看起来像这样:
using (TEMPDataContext dbc = new TEMPDataContext(connectionString))
{
GetTestPlanquestionnaireResult tq = (GetTestPlanquestionnaireResult) dbc.GetTestPlanquestionnaire(tbStartDate.Text, tbEndDate.Text);
DataTable tbl = tq.ConvertToDataTable();
MemoryStream ms = new MemoryStream();
using (ExcelPackage pck = new ExcelPackage(ms))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Results");
ws.Cells["A1"].LoadFromDataTable(tbl, true);
ws.Cells[1, 1, 1, tbl.Columns.Count].Style.Font.Bold = true;
ws.Cells[1, 1, 1, tbl.Columns.Count].AutoFitColumns();
pck.Save();
}
byte[] buffer = ms.ToArray();
Context.Response.ClearContent();
Context.Response.AddHeader("content-disposition", "attachment; filename=\"downloadfilename.xlsx\"");
Context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Context.Response.OutputStream.Write(buffer, 0, buffer.Length);
Context.Response.End();
}
我的问题是代码中的那一行调用了尚不存在的方法;即DataTable tbl = tq.ConvertToDataTable();
我还没有为ConvertToDataTable()
编写任何代码,因为我无法想象这样做的事情并不存在。如果这是令人恼火的程度,那么我可能只是将这些内容保留原样并且不用担心转换为LINQ。有没有办法做到这一点简单易读?
答案 0 :(得分:1)
如果您仍然感兴趣,这来自我的LINQPad扩展文件:
Dim nodecount As Integer
nodecount = 1
tempfile = FreeFile()
Open tempFilepath For Input As tempfile
'Find out how many nodes there are to dimension array
Do Until EOF(tempfile)
Line Input #tempfile, LineFromFile
LineItems = Split(LineFromFile, " ")
If LineItems(0) = "RBE3" Then
nodecount = nodecount + 1
End If
Loop