Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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
C# 时间表:使用SQL、LINQ或类检索数据?_C#_Asp.net_Sql Server_Linq_Design Patterns - Fatal编程技术网

C# 时间表:使用SQL、LINQ或类检索数据?

C# 时间表:使用SQL、LINQ或类检索数据?,c#,asp.net,sql-server,linq,design-patterns,C#,Asp.net,Sql Server,Linq,Design Patterns,我的问题是,我想要一个网格,其中填充了一组在任务上花费的时间。它需要将一周中的几天放在顶部(最好是固定的,即太阳、周一…周六),并将任务名称放在左栏。网格的内容将包含当天在该任务上花费的各个小时数 实现这一目标的最佳方法是什么?选项一是尝试将其全部放在数据库中的SQL语句中。选项二是LINQ查询的集合,这些查询从Tasks和TimeEntries中提取原始数据,并正确地构造它。选项三是使用LINQ并将结果拉入类(或集合),然后将其绑定到控件(可能是gridview) 您将如何执行此操作?您似乎暗

我的问题是,我想要一个网格,其中填充了一组在任务上花费的时间。它需要将一周中的几天放在顶部(最好是固定的,即太阳、周一…周六),并将任务名称放在左栏。网格的内容将包含当天在该任务上花费的各个小时数

实现这一目标的最佳方法是什么?选项一是尝试将其全部放在数据库中的SQL语句中。选项二是LINQ查询的集合,这些查询从Tasks和TimeEntries中提取原始数据,并正确地构造它。选项三是使用LINQ并将结果拉入类(或集合),然后将其绑定到控件(可能是gridview)


您将如何执行此操作?

您似乎暗示数据当前驻留在数据库中。最佳解决方案取决于数据的内部处理量和项目的现有基础设施


我要么使用大型SQL查询将所有数据汇集在一起,并将
ResultSet
直接绑定到网格(几乎没有处理或基础设施),要么使用LINQ填充一种
TimeSheetModel
类,使用现有基础架构并启用进一步处理。

您似乎暗示数据当前驻留在数据库中。最佳解决方案取决于数据的内部处理量和项目的现有基础设施


我要么使用大型SQL查询将所有数据汇集在一起,并将
ResultSet
直接绑定到网格(几乎没有处理或基础设施),要么使用LINQ填充一种
TimeSheetModel
类,使用现有的基础设施并启用进一步的处理。

我将对其进行粗略的分析,不知道您的结构,但猜测您有一个任务表和一个任务时间表,其中存储了每个任务的实际时间和日期。这未经测试,但:

选择t.taskname,sum(日期部分(d,tt.taskdate)=1,tt.taskhours)或0结束时的情况)作为星期日, 和(日期部分(d,tt.taskdate)=2,t.taskhours时的情况),否则0结束)为星期一 来自任务表t 在t.taskid=tt.taskid上加入tasktime tt
其中tt.taskdate>=@begindate和tt.taskdate我将对其进行粗略的分析,不知道您的结构,而是猜测您有一个任务表和一个任务时间表,其中存储了每个任务的实际时间和日期。这未经测试,但:

选择t.taskname,sum(日期部分(d,tt.taskdate)=1,tt.taskhours)或0结束时的情况)作为星期日, 和(日期部分(d,tt.taskdate)=2,t.taskhours时的情况),否则0结束)为星期一 来自任务表t 在t.taskid=tt.taskid上加入tasktime tt
其中tt.taskdate>=@begindate和tt.taskdate可以使用LinqToSql将行提取到内存中,然后使用LinqToObjects将这些行聚合到表格式中(这是一种数据透视聚合)

这篇文章展示了一个linq pivot查询。在您的例子中,它将非常有效,因为您知道在设计时要生成的列。

我建议使用0个匿名类。应该(至少)有一个类表示数据库中的一行,还有一个类表示网格中一行的值



因为我可以在这里说我想说的任何话,所以我想评论一下HLGEM的SUM(CASE)技术。我以前在只需要用SQL编写的报告中使用过这种方法。它工作得很好。。。如果您想用SQL编写。

可以使用LinqToSql将行提取到内存中,然后使用LinqToObjects将这些行聚合到表格式中(这是一种数据透视聚合)

这篇文章展示了一个linq pivot查询。在您的例子中,它将非常有效,因为您知道在设计时要生成的列。

我建议使用0个匿名类。应该(至少)有一个类表示数据库中的一行,还有一个类表示网格中一行的值



因为我可以在这里说我想说的任何话,所以我想评论一下HLGEM的SUM(CASE)技术。我以前在只需要用SQL编写的报告中使用过这种方法。它工作得很好。。。如果您想用SQL编写。

我喜欢让数据库尽可能多地处理数据。但我一直在纠结于这个查询的结构。有DBA吗?我喜欢让数据库尽可能多地处理数据的想法。但我一直在纠结于这个查询的结构。有DBA吗?这绝对是正确的选择。我今天要试一试,看看我的表现如何。不管怎样,请投赞成票,谢谢。这并不是我想要的,但是这个结构对我来说是一个很好的指南。案例陈述在很大程度上就是我要寻找的,一旦我弄清楚如何正确地汇总结果,我想我已经破解了它。谢谢你的指导!这绝对是对的。我今天要试一试,看看我的表现如何。不管怎样,请投赞成票,谢谢。这并不是我想要的,但是这个结构对我来说是一个很好的指南。案例陈述在很大程度上就是我要寻找的,一旦我弄清楚如何正确地汇总结果,我想我已经破解了它。谢谢你的指导!嘎!这么多正确和有用的答案。LINQ是我的首选,尽管我使用SQL也没有问题。我现在已经让存储过程完全工作了,所以这应该为转换为LINQ提供了一个良好的基础。一旦我得到结果,我会再次发布。谢谢你的提示。嘎!这么多正确和有用的答案。LINQ是我的首选,尽管我使用SQL也没有问题。我现在已经让存储过程完全工作了,所以这应该为转换为LINQ提供了一个良好的基础。一旦我得到结果,我会再次发布。谢谢你的提示。