Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 如何在LINQ中编写以下查询_C#_Linq_Linq To Sql_Linq To Entities - Fatal编程技术网

C# 如何在LINQ中编写以下查询

C# 如何在LINQ中编写以下查询,c#,linq,linq-to-sql,linq-to-entities,C#,Linq,Linq To Sql,Linq To Entities,我有一个sql查询,希望将其转换为linq SELECT CAST([Date] AS DATE), COUNT([ID]) AS 'Amount of Systems' FROM [DemoDB].[dbo].[Servers] WHERE [ServerID] IN ('ServerX') AND [Type] = 'Complete' GROUP BY CAST([Date] AS DATE) ORDER BY CAST([Date] AS DATE) 这将返回如下结果

我有一个sql查询,希望将其转换为linq

 SELECT CAST([Date] AS DATE),
 COUNT([ID]) AS 'Amount of Systems'
 FROM [DemoDB].[dbo].[Servers]
 WHERE [ServerID] IN ('ServerX') AND [Type] = 'Complete'  
 GROUP BY CAST([Date] AS DATE)
 ORDER BY CAST([Date] AS DATE) 
这将返回如下结果

我试过的

 //fromDP and toDP are the names of the Datepicker's
 var query = (this.db.Servers
                     .Where(x => x.Date >= fromDP.SelectedDate.Value && 
                     x.Date <= toDP.SelectedDate.Value));


 var query_Success = query.Count(p => p.Type == "Complete" 
                     && (p.ServerID == "ServerX"));     
//fromDP和toDP是日期选择器的名称
var query=(this.db.Servers
其中(x=>x.Date>=fromDP.SelectedDate.Value&&
x、 日期p.类型==“完成”
&&(p.ServerID==“ServerX”);
我将结果作为整体计数(例如,如果我选择从4月1日到4月15日,结果是所有“完成”的总和),但我需要在所选范围内每天计数。结果将绑定到柱状图。 如何进行

this.db.Servers.Where(s => s.ServerId == "ServerX" && s.Type == "Complete")
       .GroupBy(s => s.Date)
       .OrderBy(s => s.Key)
       .Select(g => new { Date = g.Key, AmountOfSystems = g.Count() });
将Where子句更改为

Where(s => s.ServerId == "ServerX" && s.Type == "Complete" && s.Date >= fromDP.SelectedDate.Value && s.Date <= toDP.SelectedDate.Value)
其中(s=>s.ServerId==“ServerX”和&s.Type==“Complete”和&s.Date>=fromDP.SelectedDate.Value和&s.Date
将Where子句更改为

Where(s => s.ServerId == "ServerX" && s.Type == "Complete" && s.Date >= fromDP.SelectedDate.Value && s.Date <= toDP.SelectedDate.Value)
其中(s=>s.ServerId==“ServerX”和&s.Type==“Complete”和&s.Date>=fromDP.SelectedDate.Value和&s.Date类似的内容

var fromDate = fromDP.SelectedDate.Value;
var toDate= toDP.SelectedDate.Value;

var q = from server in this.db.Servers
                where (server.Date >= fromDate && server.Date<=toDate && server.ServerID="ServerX" && server.Type=="Complete")
                group server  by server.Date
                into g
                orderby g.Key
                select new
                    {
                        Date = g.Key,
                        Count = g.Count()
                    };

var results = q.ToList();
var fromDate=fromDP.SelectedDate.Value;
var toDate=toDP.SelectedDate.Value;
var q=来自this.db.Servers中的服务器
其中(server.Date>=fromDate&&server.Date类似的内容

var fromDate = fromDP.SelectedDate.Value;
var toDate= toDP.SelectedDate.Value;

var q = from server in this.db.Servers
                where (server.Date >= fromDate && server.Date<=toDate && server.ServerID="ServerX" && server.Type=="Complete")
                group server  by server.Date
                into g
                orderby g.Key
                select new
                    {
                        Date = g.Key,
                        Count = g.Count()
                    };

var results = q.ToList();
var fromDate=fromDP.SelectedDate.Value;
var toDate=toDP.SelectedDate.Value;
var q=来自this.db.Servers中的服务器

其中(server.Date>=fromDate&&server.Date如果我理解正确,作者希望只使用日期而不使用时间。要使用EF实现这一点,我们可以使用方法
EntityFunctions.TruncateTime
来修剪时间部分。我将基于@steaks答案:

db.Servers.Where(s => s.ServerId == "ServerX" && s.Type == "Complete")
            .GroupBy(s => EntityFunctions.TruncateTime(s.Date))
            .OrderBy(s => s.Key)
            .Select(g => new {Date = g.Key, AmountOfSystems = g.Count()});

如果我理解正确,作者希望只使用日期而不使用时间。要使用EF实现这一点,我们可以使用方法
EntityFunctions.TruncateTime
来修剪时间部分。我将基于@steaks回答:

db.Servers.Where(s => s.ServerId == "ServerX" && s.Type == "Complete")
            .GroupBy(s => EntityFunctions.TruncateTime(s.Date))
            .OrderBy(s => s.Key)
            .Select(g => new {Date = g.Key, AmountOfSystems = g.Count()});

您已经尝试过,并且…有什么问题吗?抱歉,我会在我的问题中添加它。您为什么需要强制转换日期?您的数据库中的日期或日期时间类型是否不是?我已经编辑了您尝试过的问题-@ErenErsönmezy,并且…有什么问题吗?抱歉,我会在我的问题中添加它。您为什么需要强制转换日期?它不是y上的日期或日期时间类型吗我们的数据库?我已经为@steaks更新编辑了问题-@ErenErsönmezThanks,但是这个查询返回了一个列表?如何将这个列表绑定到我的图表值?谢谢@steaks更新,但是这个查询返回了一个列表?如何将这个列表绑定到我的图表值?@ws0205谢谢你的更新。但是我只想返回不同的日期值@ws0205谢谢你的更新。但我只想得到不同的日期值作为回报。