我的代码有问题。我正在尝试通过ID选择表格中的行
任何帮助都非常感谢。谢谢。

public FileStreamResult GetPdf(int?  id)
{
        IList<Requisition> all = new List<Requisition>();
        using (ClinlabEntities dc = new ClinlabEntities())
        {
            all = dc.Requisitions.ToList().First(ReqId => ReqId.ReqId == id);
        }
        WebGrid grid = new WebGrid(source: all, canPage: false, canSort: false);
        string gridHtml = grid.GetHtml(
        columns: grid.Columns(
        grid.Column("FirstName", ""),
        grid.Column("LastName", " "),
            //grid.Column("AccountNo", ""),
        grid.Column("Address", ""),
        grid.Column("City", ""),
        grid.Column("State", ""),
        grid.Column("Zip", "")
        )).ToString();

        string exportData = String.Format("<html><head>{1}</head><body>{1}</body></html>", "<style>table(border-spacing:10px; border-collapse:seperate;)</style>", gridHtml);
        var bytes = System.Text.Encoding.UTF8.GetBytes(exportData);
        using (var input = new MemoryStream(bytes))
        {
            var output = new MemoryStream();
            var document = new iTextSharp.text.Document(PageSize.LETTER, 15, 0, 0, -15);
            var writer = PdfWriter.GetInstance(document, output);
            writer.CloseStream = false;
            document.Open();
            var xmlWorker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
            xmlWorker.ParseXHtml(writer, document, input, System.Text.Encoding.UTF7);
            document.Close();
            output.Position = 0;
            return new FileStreamResult(output, "Application/Pdf");
        }
        }
    }
}

最佳答案

您正在将“请购单”列表的第一个结果分配给all变量,该变量期望使用List<Requisition>而不是从Requisition返回的.First()

IList<Requisition> all = new List<Requisition>();
using (ClinlabEntities dc = new ClinlabEntities()) {
    all = dc.Requisitions.ToList().First(ReqId => ReqId.ReqId == id);
}


最简单的解决方案是将all更改为单个记录:

 Requisition all = null;


但是,这实际上效率很低,因为您实际上将所有Requisition记录都加载到内存中,然后进行了THEN筛选。您应该改用.FirstOrDefault()并放弃.ToList()

Requisition all = null;
using (ClinlabEntities dc = new ClinlabEntities()) {
    all = dc.Requisitions.FirstOrDefault(ReqId => ReqId.ReqId == id);
}

08-25 03:16