C# .net临时表问题
我得到了一个c#.net核心项目,其中有一个名为传感器的模型C# .net临时表问题,c#,sql,asp.net,entity-framework-core,.net-3.0,C#,Sql,Asp.net,Entity Framework Core,.net 3.0,我得到了一个c#.net核心项目,其中有一个名为传感器的模型 public class Sensor { public int Id { get; set; } public long timestamp { get; set; } [Display(Name = "Country")] public string country { get; set; } [Display(Name = "Region")]
public class Sensor
{
public int Id { get; set; }
public long timestamp { get; set; }
[Display(Name = "Country")]
public string country { get; set; }
[Display(Name = "Region")]
public string region { get; set; }
[Display(Name = "Emitter")]
public string emitter { get; set; }
[Display(Name = "Value")]
public string value { get; set; }
}
我需要获得以下数据:
国家和地区以外的组合(称为标记)及其出现次数。
在该标记上,添加发射器并分别计算引用数
例:
美国南部-1000
美国南部传感器01-700
美国。南部。传感器02-300
加拿大北部-1500
加拿大。北。传感器01-1250
加拿大。北。02-250
我最初的想法是使用和temp表来保存值,但它不起作用
CREATE TABLE _Results (Tag Varchar(150), Total Int)
INSERT INTO[_Results] (Tag, Total)"
SELECT country '.' region AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region
INSERT INTO[_Results](Tag, Total)
SELECT country '.' region '.' emitter AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter
SELECT * FROM _Results
DROP TABLE _Results
但是我不能让它工作
有人能帮我吗?内存使用解决方案不可用,因此我使用了SQL和Microsoft.EntityFrameworkCore,不需要临时表
SELECT country + '.' + region AS Tag, '' as Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region
UNION
SELECT country + '.' + region AS Tag, Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter
为标记、发射器和总数创建实体。
我们称之为统计。
在DBContext中声明一个dbset
public virtual DbSet<Statistic> Statistics { get; set; }
sql是以字符串形式保存的上述sql查询。什么不起作用?欢迎使用SO!正如@corradolab所指出的,如果您明确指出哪些地方不起作用,以及您已经采取的故障排除步骤,那么社区将能够更好地帮助您。查看此链接了解更多信息-。我无法使用entityframework详细说明对数据库的查询,以获取正确的数据并将其传递给视图。所以,我想在上面的sql代码中使用temp表,但是我不能让它做任何事情。根据我的研究,.NET在处理临时表时效果不太好,所以我想知道是否有其他解决方案或方法可以让它工作。还有一件事,错误消失了,但是查询没有返回正确的值``我在中创建了一个foreach循环来检查查询结果,它返回了以下内容:Tag=0 Emitter=Total=1 Tag=0 Emitter=Total=2 Tag=0 Emitter=Total=4 Tag=0 Emitter=sensor01 Total=2 Tag=0 Emitter=sensor01 Total=4 Tag=0 Emitter=sensor02 Total=2 Tag=0 Emitter=sensor03 Total=1I检查了数据库中,表中的值已更正。如果发现问题,请在sql“country+”.+区域中,使用| |而不是+
query = context.Statistics
.FromSql(sql)
.AsNoTracking();