C# 使用动态数据管理查询(商品)
我在数据库中有一个带有动态记录的表。我用静态数据(商品)得到了正确的结果,但我需要用动态数据得到结果 数据库表为:C# 使用动态数据管理查询(商品),c#,asp.net,gridview,entity-framework-5,C#,Asp.net,Gridview,Entity Framework 5,我在数据库中有一个带有动态记录的表。我用静态数据(商品)得到了正确的结果,但我需要用动态数据得到结果 数据库表为: Id Month Commodity Amount ---------------------------- 1 May wheat 100 2 May rice 200 3 June wheat 400 4 July maize 100 5 June wheat 100
Id Month Commodity Amount
----------------------------
1 May wheat 100
2 May rice 200
3 June wheat 400
4 July maize 100
5 June wheat 100
我的结果是:
Month wheat rice maize
--------------------------------
May 100 200
June 500
July 100
我的aspx代码:
<asp:GridView ID="grdData" runat="server">
</asp:GridView>
在上面的查询中,它是静态的(小麦、大米和玉米),但我需要这些商品动态。。。请帮助我如何使用动态数据(商品)管理这些数据。如果您可以使用数据表而不是列表,以下代码将帮助您。请记住,这只是一个示例代码,可以帮助您理解这个概念。请根据您的输入数据检查循环的效率 它填充表,您可以将表分配给数据源
var list = new[]
{
new { Id = 1, Month = 2, Commodity = "Wheat", Amount = 20 },
new { Id = 2, Month = 2, Commodity = "Maize", Amount = 30 },
new { Id = 3, Month = 2, Commodity = "Barley", Amount = 30 },
new { Id = 4, Month = 1, Commodity = "Wheat", Amount = 20 },
new { Id = 5, Month = 1, Commodity = "Maize", Amount = 30 },
new { Id = 6, Month = 3, Commodity = "Barley", Amount = 30 }
};
// group data by month and keep all rows
var data =
list.GroupBy(r => r.Month)
.Select(
r =>
new
{
Month = r.Key,
Data = r.ToList()
})
.ToList();
// get a list of all available commodities
var allColumns = data.SelectMany(d => d.Data.Select(s => s.Commodity)).Distinct().ToList();
// create a table
var datatable = new DataTable();
datatable.Columns.Add(new DataColumn("Month"));
// add all commodities as columns
allColumns.ForEach(c=>datatable.Columns.Add(new DataColumn(c)));
// create 1 row for each month group and fill the columns
data.ForEach(
d =>
{
var row = datatable.NewRow();
row["Month"] = d.Month;
allColumns.ForEach(c => row[c] = d.Data.Where(g => g.Commodity == c).Sum(g => g.Amount));
datatable.Rows.Add(row);
});
商品的第一个计数号,使用rows.count或count(sql),只需为(i=0;i如何在linq查询中使用for循环)编写一个循环?
var list = new[]
{
new { Id = 1, Month = 2, Commodity = "Wheat", Amount = 20 },
new { Id = 2, Month = 2, Commodity = "Maize", Amount = 30 },
new { Id = 3, Month = 2, Commodity = "Barley", Amount = 30 },
new { Id = 4, Month = 1, Commodity = "Wheat", Amount = 20 },
new { Id = 5, Month = 1, Commodity = "Maize", Amount = 30 },
new { Id = 6, Month = 3, Commodity = "Barley", Amount = 30 }
};
// group data by month and keep all rows
var data =
list.GroupBy(r => r.Month)
.Select(
r =>
new
{
Month = r.Key,
Data = r.ToList()
})
.ToList();
// get a list of all available commodities
var allColumns = data.SelectMany(d => d.Data.Select(s => s.Commodity)).Distinct().ToList();
// create a table
var datatable = new DataTable();
datatable.Columns.Add(new DataColumn("Month"));
// add all commodities as columns
allColumns.ForEach(c=>datatable.Columns.Add(new DataColumn(c)));
// create 1 row for each month group and fill the columns
data.ForEach(
d =>
{
var row = datatable.NewRow();
row["Month"] = d.Month;
allColumns.ForEach(c => row[c] = d.Data.Where(g => g.Commodity == c).Sum(g => g.Amount));
datatable.Rows.Add(row);
});