Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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#_Sql Server_Linq_Sql To Linq Conversion - Fatal编程技术网

C# Sql聚合到Linq查询

C# Sql聚合到Linq查询,c#,sql-server,linq,sql-to-linq-conversion,C#,Sql Server,Linq,Sql To Linq Conversion,我需要将此查询转换为linq to实体 SELECT CONVERT(varchar, ValueDateTime, 113) as MINUTE , avg(TagDataValue.TagValue) Value, TagName FROM TagDataValue WHERE ValueDateTime >= '6/03/2018' AND ValueDateTime < '6/06/2018' and TagName between ('Poll.Registers Bloc

我需要将此查询转换为linq to实体

SELECT CONVERT(varchar, ValueDateTime, 113) as MINUTE , avg(TagDataValue.TagValue) Value, TagName
FROM TagDataValue
WHERE ValueDateTime >= '6/03/2018' AND ValueDateTime < '6/06/2018' and TagName between ('Poll.Registers Block 0.310-TT-102_(6)') and ('Poll.Registers Block 0.310-TT-102_(7)')
GROUP BY CONVERT(varchar, ValueDateTime, 113) , TagName
选择转换(varchar,ValueDateTime,113)为分钟,平均值(TagDataValue.TagValue)值,标记名
来自TagDataValue
其中ValueDateTime>='6/03/2018'和ValueDateTime<'6/06/2018',标记名介于('Poll.Registers Block 0.310-TT-102_u6')和('Poll.Registers Block 0.310-TT-102_7')之间
按转换分组(varchar,ValueDateTime,113),标记名
我已经在linq中尝试了对这样的实体的两个查询

var g = (from x in ObjEntities.TagDataValues
                             where x.ValueDateTime >= FromDate && x.ValueDateTime <= EndDate && MachineName.Contains(x.MachineName) && ServerName.Contains(x.ServerName) && Tags.Contains(x.TagName)

                             select new
                             {
                                 TagName = x.TagName,
                                 MachineName = x.MachineName,
                                 ServerName = x.ServerName,
                                 TagValue = x.TagValue,
                                 DtTime = x.ValueDateTime
                             }).ToList().Distinct().GroupBy(t => new
                             {
                                 Date = t.DtTime.AddSeconds(-t.DtTime.Second % 60).AddMinutes(-t.DtTime.Minute % 60), //System.Data.Entity.DbFunctions.AddHours(System.Data.Entity.DbFunctions.AddMinutes(t.DtTime, -t.DtTime.Minute), -t.DtTime.Hour),
                                 TagName = t.TagName.Distinct(),
                             }).Select(u => new
                             {
                                 DateTime = u.Key.Date,
                                 Tagname = u.Key.TagName,
                                 tagvalue = u.Average(cd => cd.TagValue)
                             }).ToList();
var g=(从objenties.TagDataValues中的x开始)
其中x.ValueDateTime>=FromDate&&x.ValueDateTime新建
{
Date=t.DtTime.AddSeconds(-t.DtTime.Second%60)。AddMinutes(-t.DtTime.Minute%60),//System.Data.Entity.DbFunctions.AddHours(System.Data.Entity.DbFunctions.AddMinutes(t.DtTime,-t.DtTime.Minute),-t.DtTime.Hour),
TagName=t.TagName.Distinct(),
}).选择(u=>new
{
日期时间=u.Key.Date,
标记名=u.Key.Tagname,
tagvalue=u.Average(cd=>cd.tagvalue)
}).ToList();

但是它没有给出结果,你知道如何将其写入linq。

为什么
Distinct
,你的模型实现了
IEquatable
,因为你没有通过
平等比较者
,你最好调用
Distinct
,在克劳塞尝试过之后,再调用平等比较者,但我也不想这样(然后是分组问题,检查生成了哪些值,因为您正在添加时间(秒/分钟),您希望如何获得任何分组数据。第一点仍然是Distinct是否会导致任何值,如果是,则根据我的理解,为要分组的数据更正分组值
t.DtTime.AddSeconds(-t.DtTime.Second%60).AddMinutes(-t.DtTime.Minute%60)
将与
DtTime
的值不匹配,也是
t.TagName
要调用Distinct的集合,您在
标记名上是否有足够的数据?
typeno,基本上,这是我需要实现的,如果您能帮助的话,它将非常有用。