所以我在我的控制器中有一个生成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 。聚合命令。