如何将两个 LINQ 数据源合并为一个图表的 table?
How can I Merge Two LINQ DataSources into a single table for a chart?
我试图让两个请求我的 SQL 服务器计算一个月中每一天的两个不同值,并将它们放入一个 table 中以在图表中使用。
我试图用 Union 将它们合并到一个 DataSource 中,但编译失败。下面的代码在两个不同的数据源中给出了我需要的结果。
此代码为我提供了我需要的结果。
Dim ChartDataOpen = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = False _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {CalendarDate, .AlarmCount = g.Count()})
Dim ChartDataClosed = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = True _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {CalendarDate, .AlarmClosedCount = g.Count()})
这段代码是我的问题,我找不到一种聪明的方法来根据日历日期 (1/16/2015) 合并两个数据源并将它们添加到一个数据源中以在图表中使用。
Dim ChartData = ChartDataOpen.Union(ChartDataClosed)
RadHtmlChartAvg.DataSource = ChartData
RadHtmlChartAvg.DataBind()
最终工作代码:
Dim ChartData = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {
CalendarDate,
.AlarmCount = g.Count(),
.AlarmOpenCount = g.Count(Function(a) a.IsClosed = False),
.AlarmClosedCount = g.Count(Function(a) a.IsClosed = True)
})
创建具有相同属性的 NAMED 对象:
我可以在 C# 中做到这一点。您需要转换 VB.NET
public class CalendarCount
{
public dateTime CalendarDate {get; set;}
public int Count {get; set;}
}
这部分我要猜 vb 语法:
Dim ChartDataOpen = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = False _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New CalendarCount With {CalendarDate, .Count = g.Count()})
Dim ChartDataClosed = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = True _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New CalendarCount With {CalendarDate, .Count = g.Count()})
我认为您想要的是一种结构,您可以在其中看到一行中的打开和关闭计数:
Dim ChartData = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {
CalendarDate,
.AlarmCount = g.Count(Function(x) Not x.IsClosed)
.AlarmClosedCount = g.Count(Function(x) x.IsClosed)
})
您应该能够在每个日期用两个点或条形图绘制图表。
我试图让两个请求我的 SQL 服务器计算一个月中每一天的两个不同值,并将它们放入一个 table 中以在图表中使用。
我试图用 Union 将它们合并到一个 DataSource 中,但编译失败。下面的代码在两个不同的数据源中给出了我需要的结果。
此代码为我提供了我需要的结果。
Dim ChartDataOpen = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = False _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {CalendarDate, .AlarmCount = g.Count()})
Dim ChartDataClosed = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = True _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {CalendarDate, .AlarmClosedCount = g.Count()})
这段代码是我的问题,我找不到一种聪明的方法来根据日历日期 (1/16/2015) 合并两个数据源并将它们添加到一个数据源中以在图表中使用。
Dim ChartData = ChartDataOpen.Union(ChartDataClosed)
RadHtmlChartAvg.DataSource = ChartData
RadHtmlChartAvg.DataBind()
最终工作代码:
Dim ChartData = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {
CalendarDate,
.AlarmCount = g.Count(),
.AlarmOpenCount = g.Count(Function(a) a.IsClosed = False),
.AlarmClosedCount = g.Count(Function(a) a.IsClosed = True)
})
创建具有相同属性的 NAMED 对象:
我可以在 C# 中做到这一点。您需要转换 VB.NET
public class CalendarCount
{
public dateTime CalendarDate {get; set;}
public int Count {get; set;}
}
这部分我要猜 vb 语法:
Dim ChartDataOpen = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = False _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New CalendarCount With {CalendarDate, .Count = g.Count()})
Dim ChartDataClosed = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) And a.IsClosed = True _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New CalendarCount With {CalendarDate, .Count = g.Count()})
我认为您想要的是一种结构,您可以在其中看到一行中的打开和关闭计数:
Dim ChartData = (From a In db.Alarms _
Where a.Generated >= FirstDayOfMonth(DateTimeNow) _
And a.Generated <= LastDayOfMonth(DateTimeNow) _
Group a By CalendarDate = a.Generated.Value.Date Into g = Group _
Select New With {
CalendarDate,
.AlarmCount = g.Count(Function(x) Not x.IsClosed)
.AlarmClosedCount = g.Count(Function(x) x.IsClosed)
})
您应该能够在每个日期用两个点或条形图绘制图表。