打印哈希集 MVC 的内容



所以我在我的控制器中有一个生成pdf的函数。但是,我无法在pdf中打印集合,因为它给了我System.Collections.Generic.HashSet我想打印哈希集的内容。有什么想法可以解决这个问题吗?

private static byte[] GeneratePdf(List<Plant> plants)
    {
        using (MemoryStream memoryStream = new MemoryStream())
        {
            using (var doc = new Document())
            {
                PdfWriter.GetInstance(doc, memoryStream);
                doc.Open();
                doc.SetMargins(120, 120, 270, 270);
                BaseFont font = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
                Font normalFont = new Font(font, 12, Font.NORMAL, BaseColor.BLACK);


                Paragraph pgTitle = new Paragraph();
                pgTitle.Font = new Font(font, 20, Font.NORMAL, BaseColor.BLACK); 
                pgTitle.Add("American University of Beirut");
                doc.Add(pgTitle);
                Paragraph pgPlantTitle = new Paragraph();
                pgPlantTitle.Font = new Font(font, 18, Font.NORMAL, BaseColor.BLACK);
                pgPlantTitle.Add("Plant Description");
                doc.Add(pgPlantTitle);
                foreach (Plant p in plants)
                {
                    Paragraph plantDisc = new Paragraph();
                    plantDisc.Font = new Font(font, 14, Font.NORMAL, BaseColor.BLACK);
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Plant Name :");
                    plantDisc.Add(p.ScientificName);
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Plant Type :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add(p.TypeOfPlants.ToString());
                    plantDisc.Add("Plant Height Range :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Plant Spread Range :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Tree Shape :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Plant Origin :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Plant Color :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Fruit Color :");
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Light Requirement :");
                    List<string> list = p.LightRequirements.Select(z => z.ToString()).ToList();
                    plantDisc.Add(list.ToString());
                    plantDisc.Add(new Paragraph(" "));
                    plantDisc.Add("Water Requirement :");

                    doc.Add(plantDisc);
                    doc.Add(new Paragraph(" "));
                }
            }
            return memoryStream.ToArray();
        }
    }

我无法从您的代码中找出 Hast Set 的位置,但是如果您正在做.ToString() 在集合上,你得到的只是以下类型:

var mySet = new HashSet<string>();
mySet.Add("Lorem");
mySet.Add("Ipsum");
System.Console.WriteLine(mySet.ToString());
// OUTPUTS: System.Collections.Generic.HashSet`1[System.String]

您需要执行以下操作:

foreach (var thing in mySet)
{
    System.Console.WriteLine(thing);
}
// OUTPUTS: Lorem 
//          Ipsum

你可以把它作为一个.net小提琴来理解我的意思。

根据您希望输出内容的方式,您可能会执行一些更整洁的操作,例如 Linq 。聚合命令。

最新更新