Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何将两个LINQ数据源合并到一个图表的单个表中?_Vb.net_Linq_Merge_Datasource - Fatal编程技术网

Vb.net 如何将两个LINQ数据源合并到一个图表的单个表中?

Vb.net 如何将两个LINQ数据源合并到一个图表的单个表中?,vb.net,linq,merge,datasource,Vb.net,Linq,Merge,Datasource,我正在尝试获取两个值,让我的SQL server为每个月的每一天计算两个不同的值,并将它们放在一个表中,以便在图形中使用 我试图用Union将它们合并到一个数据源中,但它无法编译。下面的代码给出了我在两个不同数据源中需要的结果 这段代码为我提供了所需的结果 Dim ChartDataOpen = (From a In db.Alarms _ Where a.Generated >= FirstDayOfMonth(DateTimeNow) And a.Ge

我正在尝试获取两个值,让我的SQL server为每个月的每一天计算两个不同的值,并将它们放在一个表中,以便在图形中使用

我试图用Union将它们合并到一个数据源中,但它无法编译。下面的代码给出了我在两个不同数据源中需要的结果

这段代码为我提供了所需的结果

    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()})
最终工作代码:

    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)
          })

创建具有相同属性的命名对象:

我可以用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)
                         })

您应该能够在图表中以每个日期两个点或两条线绘制此结果。

但是如何将两个结果合并到一个源中?您是正确的,我将在一行中获取该数据。x和a没有在Select New With中声明,你能向我解释一下这部分代码吗?啊,该死,这是我的C方言。我能够理解你在做什么,并得到了它!非常感谢。使用工作代码更新OP。
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)
                         })