2

我一直在四处寻找并希望得到一些想法 - 我目前有一个网格视图,它从一个 linq 数据源获取它的源,该数据源在 onselecting 命令上获取它的数据。但是我正在尝试实现分组...

关于我应该如何做到这一点的任何伪代码或指针?在我的脑海中,我的代码看起来像这样:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataSourceID="LinqDataSource1" EmptyDataText="There are no data records to display.">

..列设置和一个关闭的gridview标签然后到linqdatasource ...

<asp:LinqDataSource ID="LinqDataSource1" runat="server" onselecting="LinqDataSource_Selecting" > 

到 .cs 页面!

public void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
var db = new MyDataContext())
var orders = from order in db.tbl_orders 
select new {(order.Id, order.customer, order.state);
e.Result = orders;
}

我试图弄清楚在哪里以及如何在所有这一切中实现组。我见过的大多数示例要么在 linqDataSource 代码中进行分组(这给了我有趣的错误,认为它与 onSelecting 有关)或狡猾地建议我购买 X 产品。我正在尝试按州对订单进行分组-因此最终结果将类似于:

California (3 orders)
ID Order
ID Order
ID Order
Montana (1 orders) 
ID Order

谢谢!

4

1 回答 1

0

嗨,这是您如何做到的示例

        public void Button_Click()
    {
        List<Order> ods = new List<Order>{new Order(){State="cali",ID=1},
                new Order(){State="cali",ID=2},
                new Order(){State="nali",ID=3},
                new Order(){State="pali",ID=4},
                new Order(){State="pali",ID=5},
        };
        List<Grouping> groups = new List<Grouping>();
        var orders = ods.GroupBy(g => g.State);
        foreach (var order in orders)
        {
            Grouping group = new Grouping() { State = order.Key, Orders = new List<Order>(), IDs = new List<int>() };
            order.ToList().ForEach(o => { group.Orders.Add(o); group.IDs.Add(o.ID); });
            groups.Add(group);
        }

    }
    public class Grouping
    {
        public string State { get; set; }
        public List<Order> Orders { get; set; }
        public List<int> IDs { get; set; }
    }
    public class Order
    {
        public string State
        {
            get;
            set;
        }
        public int ID
        {
            get;
            set;
        }
    }

除了 dataSource 和 classes 不同但逻辑相同之外,这正是您想要的。我希望这能帮助你理解这个想法。

于 2012-07-18T02:12:25.217 回答