我一直在寻找并希望得到一些想法 - 我目前有一个gridview,它从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
谢谢!
答案 0 :(得分: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和类不同但逻辑是相同的。我希望这能帮助你理解这个想法。