2016-06-13 58 views
3

我遇到了我的代码问题。我试图通过ID 在我的表中选择行任何帮助真的很感激它。谢谢。不能将类型'...'隐式转换为'System.Collections.Generic.IList <...>'。存在明确的转换(您是否缺少演员?)

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"); 
     } 
     } 
    } 
} 
+0

你有额外的'}}'在你的代码也一定要仔细检查代码格式在.cs文件以及 – MethodMan

回答

2

要指定您的申请表到all变量,它期待List<Requisition>而不是从.First()返回Requisition的第一个结果。

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记录到内存中,然后过滤。您应该改用.FirstOrDefault()和放弃的.ToList()

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

非常感谢你的帮助。我按照您的建议进行了更改。但它给了我一个不同的错误:( – Frank

+0

@Frank不是一个问题,我建议你用修改后的代码和错误开一个新的问题,这样你的问题就可以清晰明了。 –

相关问题