显示数据库(c#)中的项目

本文关键字:项目 数据库 显示 | 更新日期: 2023-09-27 18:26:32

我正在计算访问数据库中的一行。我的数据库包含电影公司、公司制作的电影以及售出的电影数量。数据库中的信息比我提到的要多,但对于这个问题,我只看了两列。电影公司和该公司制作的电影。一个栏目叫做公司,另一个栏目叫电影。我需要数一下这家电影公司制作的每一部电影。我在数据库中统计了六家不同的电影公司。我的目标是简单地在列表框中显示电影公司及其制作的电影数量。

我有两个大问题。1.我的结果不会显示在列表框中。2根据看过我代码的好心人的说法。程序没有计算任何内容。下面是我想要显示的的示例

公司#电影

派拉蒙4

20世纪x 8

LucasFilm 6

等等。

我想的是创建一个嵌套的foreach循环,并将某个公司制作的每一部电影都添加到列表框中。

private void tabP3_Click(object sender, EventArgs e)
    {
       foreach (DataRowView row in bindingSource1.List)
        {
            foreach (DataRowView row2 in bindingSource1.List)
            {
              if(((String)row2["Company"]).Equals(row["Movie"]))
                {
                int count = 0;
                count++;
                lbCompany.Items.Add((String.Format("{0,5}", count)));
                }
            }
        }
    }

显示数据库(c#)中的项目

为什么不使用Linq来实现解决方案?首先,为了满足您的要求,我会这么做。

以下内容摘自本帖。"数据"应该是你的收藏。。。在这里,您将获得一个包含2个字段的新类型(您可以根据自己的方便进行编辑/更改)。您可能还想删除OrderBy。

foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric)
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}

首先,最确定的是,您永远不会输入if语句,因为您正在比较不同对象的相等性。一个数据类型字符串为(String)row2["Company"]的对象和一个数据数据类型为System.Data.DataRow row["Movie"]的对象。此外,在每次迭代中,您都将counter设置回零。所以试试:

 int count = 0;
 foreach (DataRowView row in bindingSource1.List)
        {
            foreach (DataRowView row2 in bindingSource1.List)
            {
              if((row2["Company"].ToString()).Equals(row["Movie"].ToString()))
                {               
                count++;
                lbCompany.Items.Add((String.Format("{0}", count)));
                }
            }
        }