c# - 在 UI 中对行进行分组并在 C# 中插入两个表

标签 c# algorithm

我目前正在开发一个程序,它应该根据表格的选择来创建发票和添加行。

这是我的表(使用 DevExpress 创建):

enter image description here

这些是以公司 ID 作为引用的 future 发票行。

我想对 future 按钮“创建发票”做的是为每个选定的 ID 创建 1 个发票,并将所有选定的行添加到 invoicelines 表中。

我的表是:

发票

发票编号

公司编号

发票行

身份证

发票编号

标题 ....

根据我的示例图片,我想要的结果是:

2 张发票,每张发票都添加了 2 行


问题是我不知道如何在我的代码中处理这个问题。

我目前有:

private void btn_ExportToDB_ItemClick(object sender, ItemClickEventArgs e)
        {
            List<int> PWIDs = new List<int>();
            List<int> distinct = new List<int>();
            Dictionary<int, int> lines = new Dictionary<int, int>();
            if (gridView.SelectedRowsCount > 0)
            {

                for (int i = gridView.SelectedRowsCount - 1; i >= 0; i--)
                {

                    int rowHandle = gridView.GetSelectedRows()[i];

                    int PWID = int.Parse(gridView.GetRowCellValue(rowHandle, "pwID_PW").ToString());
                    PWIDs.Add(PWID);
                    lines.Add(rowHandle, PWID);
                    MessageBox.Show("customer id " + PWID);

                    distinct = PWIDs.Distinct().ToList();

                }
                foreach (int value in distinct)
                {

                }
            }
}

我尝试执行以下操作:

1- 创建一个字典,我将选定的行句柄 + pwID 放入其中。

2- 之后,我遍历我的字典并选择不同的 pwID 值(这些用于我的发票)。

3- 此后,我一直在处理我的发票行,我似乎无法将其添加到我的发票行表中,因为我认为我处理此问题的设计是错误的。

我怎样才能以最有效的方式解决这个问题?

最佳答案

如果您可以从屏幕截图中的选择列表中返回整个工单对象,那么您可以运行一段代码,如下所示;

    public List<Invoice> CreateInvoices(IEnumerable<Ticket> selectedTickets)
    {
        // Group tickets by company id
        return selectedTickets.GroupBy(ticket => ticket.CompanyId)
            // Convert grouping into new Invoice objects
            .Select(g => new Invoice
            {
                // Build invoice object
                CompanyId = g.Key,
                // Build invoice lines
                InvoiceLines = g.Select(line => new InvoiceLine() {Title = line.Title}).ToList()
            }).ToList();
    }

这将返回一个 IEnumerable of Invoices,每个 Invoices 中包含多个 InvoiceLines。

关于c# - 在 UI 中对行进行分组并在 C# 中插入两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47180847/

相关文章:

c# - Slim 同步类是按 AppDomain 还是按进程?

c# - 从测试运行 WPF 对话框

Python-算法语句

Java:如何遍历类型链接列表的数组并将它们附加到数组

c# - 从 .Net 中的 SAS 数据源读取数据

c# - 可查询 : reuse query in a different context

c# - ADFS 登录页面本地化 - ASP.NET : I can't seem to be able to change language of the page dynamically

python - 滚动或滑动窗口迭代器?

c++ - 是否为包含相同值的范围定义了 std::nth_element?

algorithm - 是否有任何无法揭示其模式的随机数生成算法?