如何为列表中找到的每个不同名称保存 PDF-document?

How can I save a PDF-document for each distinct name found in a list?

使用 PDFSharp,我想 为我正在循环的 List 的 属性 中的每个不同值创建一个 PDF-document .

将我的 collection 分组,并创建 List:

var listName = collectionName
    .GroupBy(p => new { p.propertyName })
    .ToList();

尝试为 listName 中的每个 propertyName 执行我的 PDFsharp-code:

foreach (var trip in paidTrip) {
    // Getting just the name string from the specific propertyName key
    string[] remove = { "{", "}", "propertyName", "=" };
    string pnString = trip.Key.ToString();
    foreach (string item in remove) {
        pnString = pnString.Replace(item, string.Empty);
}

这就是我认为我丢球的地方;我怎样才能把每个名字都带到他们不同的PDF-document?我错过了那个连接。 所以,在此之下,我开始创建我的 PDF-document(s):

    // Continued
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    PdfDocument doc = new();
    PdfPage page = doc.AddPage();
    XGraphics gfx = XGraphics.FromPdfPage(page);
    // Adding fonts and brushes...
    
    // Adding some text, to check If I am able to grab the names of propertyName (which I am - but jut the first, once)...
    gfx.DrawString(pnString, new XFont("Arial", 40, XFontStyle.Bold), myGreen, new XPoint(5, 250));

    // And then, saving the PDF-document
    doc.Save("C:\My\File\Path\Test.pdf");

但正如我所说,这只会为找到的名字保存一个 PDF。 我相信它正在尝试为找到的每个名称保存一个文件,但它不能,因为已经使用指定的文件名创建了该文件。

所以我的问题是:如何确保在创建 PDF 时将 foreach 循环中找到的每个名称都带到我那里,并为每个保存一个 PDF-document他们?

将您的代码放入 foreach 循环中 :) PPAPed:

 foreach (var trip in paidTrip) {
        // Getting just the name string from the specific propertyName key
        string[] remove = { "{", "}", "propertyName", "=" };
        string pnString = trip.Key.ToString();
        foreach (string item in remove) {
            pnString = pnString.Replace(item, string.Empty);
        }

        // Continued 
        // [..] the rest of the code here
  }

在保存文件的最后,您需要将文件名更改为列表中的密钥,如下所示:

// And then, saving the PDF-document
doc.Save($"C:\My\File\Path\{pnString}.pdf");

这将为您之前执行 GroupBy 的每个不同 propertyName 键保存一个单独的文件。