【问题标题】:Remove duplication row in gridview删除gridview中的重复行
【发布时间】:2014-03-17 12:14:30
【问题描述】:

我的gridview 有四列,facilities_idnamedatequantity。我的问题是我的结果中有相同的facilities_id。那么我该如何解决呢,有人可以帮助我吗?谢谢。。

另外,我希望能在 gridview 中找到前 2 行。意味着只显示前2行.. 谢谢

    DataClassesDataContext db = new DataClassesDataContext();


    var query = from p in db.Facilities
                join v in db.Reservations on p.facilities_id equals v.facilities_id
                join c in db.Reservation_Details on v.reservation_id equals 
                c.resevation_id

                where SqlMethods.Like(c.date, "%" + DropDownList1.Text + "%")
                select new
                {
                    p.facilities_id,
                    p.name,
                    c.date,
                    Quantity = p.Reservations.Count()

                };

    GridView1.DataSource = query;
    GridView1.DataBind();

这是我的输出,如何删除相同的设施 ID。

facilities_id  name    date        quantity
  F001           aa    12/01/2014      1
  F001           aa    12/01/2014      12
  F002           bb    12/01/2014      1
  F003           cc    12/01/2014      1  

我希望能变成这样。

facilities_id  name    date        quantity
  F001           aa    12/01/2014      13
  F002           bb    12/01/2014      1
  F003           cc    12/01/2014      1  

【问题讨论】:

  • 尝试使用Distinct()facilities_id
  • 假设您需要按facilities_id 对输出进行分组。
  • 好吧,如果你想这样,数量似乎无关紧要,那为什么要显示呢?如果您也需要数量,那么复式输入似乎是合法的。您可以对数量进行分组和总结。
  • @user3428639 使用varchar 而不是Date/DateTime 约会是你真正应该考虑的事情......

标签: c# asp.net gridview


【解决方案1】:
GridView1.DataSource = query.DistinctBy( i => i.facilities_id);

您可以使用 GroupBy() 并选择每个组的第一个项目来实现您想要的 - 假设您想为每个不同的设施 ID 属性选择一个项目:

  GridView1.DataSource  = query.GroupBy(x => x.facilities_id)
                         .Select(g => g.First())
                         .ToList();

【讨论】:

  • 你能解释一下你为什么使用.Select(g => g.First())吗?
  • 从分组的不同列表中取出第一个不同的元素
  • 我知道需要什么。意义何在?
  • 意义?你在问什么?
【解决方案2】:

这是唯一设施 ID 的代码。 我不知道您是从数据集或表中获取数据。

我返回了一个代码,该代码正在检索数据集中的代码,并且该数据集将是唯一的。

您的数量也会被添加,但设施_id 不会重复。

     var sells = from row in ds.Tables["cartTable"].AsEnumerable() ("Write here your table name as I dont know your table name ")
                    group row by row.Field<string>("facilities_id") into rowGroup
                    select new
                    {
                        facilities_id = rowGroup.Key,

                        name = string.Join(" ", rowGroup.Select(row => row.Field<string>("name")).Distinct().ToArray()),

                        date = string.Join(" ", rowGroup.Select(row => row.Field<string>("date")).Distinct().ToArray()),

                        price = string.Join(" ", rowGroup.Select(row => row.Field<decimal>("price")).Distinct().ToArray()),

                        Quantity = rowGroup.Sum(r => r.Field<int>("quantity")),

                    };


I hope this code will be useful to you......!!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多