【问题标题】:trying to use single condition in sorting datagrid view column尝试在排序数据网格视图列中使用单个条件
【发布时间】:2011-08-29 13:06:40
【问题描述】:

如果我单击数据网格视图列标题,我将使用以下函数,整个数据网格视图列将被排序....

private void dgvproducts_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
   if (order == "d")
   {
        //order by ascending
        order = "a";
       dgvproducts.DataSource = dbcontext.products
           .GroupBy(x => x.product_Id)
           .Select(a => new
             {
                    productid = a.Key,
                    prouctnam = a.FirstOrDefault().product_Name,
                    productimage = a.FirstOrDefault().product_Image,
                    productdescr = a.FirstOrDefault().product_Description,
                    stockavailable = a.LongCount(),
                    productprice = a.FirstOrDefault().product_Price
             }).OrderBy(a=>a.prouctnam).ToList();
    }
    else
    {
        // order by descending
        order = "d";
        dgvproducts.DataSource = dbcontext.products
            .GroupBy(x => x.product_Id)
            .Select(a => new
         {
                  productid = a.Key,
                  prouctnam = a.FirstOrDefault().product_Name,
                  productimage = a.FirstOrDefault().product_Image,
                  productdescr = a.FirstOrDefault().product_Description,
                  stockavailable = a.LongCount(),
                  productprice = a.FirstOrDefault().product_Price
         }).OrderByDescending(a => a.prouctnam).ToList();

    }
}    

这工作正常....

我想要的是,有没有可能一次检查单个条件和绑定数据网格视图...

而不是做两次......

非常感谢您的任何想法......

【问题讨论】:

    标签: c# winforms entity-framework datagridview linq-to-entities


    【解决方案1】:

    您可以重构并仅在以后应用订单部分 - 这样可以避免大部分重复代码:

    var products = dbcontext.products
                            .GroupBy(x => x.product_Id)
                            .Select(a => new
                            {
                                productid = a.Key,
                                prouctnam = a.FirstOrDefault().product_Name,
                                productimage = a.FirstOrDefault().product_Image,
                                productdescr = a.FirstOrDefault().product_Description,
                                stockavailable = a.LongCount(),
                                productprice = a.FirstOrDefault().product_Price
                            });
    
    if (order == "d")
    {
        order = "a";
        dgvproducts.DataSource = products.OrderBy(a=>a.prouctnam).ToList();
    }
    else
    {
        order = "d";
        dgvproducts.DataSource = products.OrderByDescending(a=>a.prouctnam).ToList();
    }
    

    【讨论】:

    • 或者你可以只使用 products.Reverse() 而不是 products.OrderByDescending(a=>a.prouctnam).ToList() :D
    • @Ace:这意味着它们已经按产品名称排序,这不是给定的
    猜你喜欢
    • 2012-05-28
    • 2011-11-01
    • 1970-01-01
    • 2013-04-22
    • 2013-02-17
    • 1970-01-01
    • 2015-12-24
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多