EF接收数据通用实体模型
如何接收EF查询的不同实体模型
/// 实时天气 /// </summary> /// <param name="selectDate"></param> /// <param name="type">数据类型:1地上;2地下</param> /// <param name="minuteType">时间类型:1 10分钟;2 30分钟</param> /// <returns></returns> public ApiResult GetWeatherHourly(int type, int minuteType) { ApiResult result = new ApiResult(); result.success = true; IQueryable data; //var endDate = DateTime.Now; //var endDate = new DateTime(2020,11,30,15,15,16); //var endDate = new DateTime(2020, 11, 18, 13, 15, 16); var endDate = db.T_AWS10min.Select(d => d.TIMESTAMP).Max(); var startDate = endDate.AddHours(-24); //var startDate = endDate.Date; //var minuteType =1; if (type == 1) { if (minuteType == 1) { data = db.T_AWS10min.Where(d => d.TIMESTAMP >= startDate && d.TIMESTAMP <= endDate).Select(d => d); } else if (minuteType == 2) { data = db.T_AWS30min.Where(d => d.TIMESTAMP >= startDate && d.TIMESTAMP <= endDate).Select(d => d); } else { //data = db.V_AWSHour.Where(d => (d.TIMESTAMP == startDate.Date && d.Hour >= startDate.Hour) || (d.TIMESTAMP == endDate.Date && d.Hour <= endDate.Hour)).Select(d => d).OrderBy(d => new { d.TIMESTAMP, d.Hour }); var sql = @"SELECT [Project1].[TIMESTAMP] AS [TIMESTAMP], [Project1].[Hour] AS [Hour], [Project1].[TA_Avg] AS [TA_Avg], [Project1].[TA_Avg_Max] AS [TA_Avg_Max], [Project1].[TA_Avg_Min] AS [TA_Avg_Min], [Project1].[RH_Avg] AS [RH_Avg], [Project1].[Rain_Tot] AS [Rain_Tot], [Project1].[WS_Avg] AS [WS_Avg], [Project1].[Press_Avg] AS [Press_Avg], [Project1].[Sun_Hour_Tot] AS [Sun_Hour_Tot], [Project1].[DR_Avg] AS [DR_Avg], [Project1].[UR_Avg] AS [UR_Avg], [Project1].[DLR_Avg] AS [DLR_Avg], [Project1].[ULR_Avg] AS [ULR_Avg], [Project1].[cnr4_T_C_Avg] AS [cnr4_T_C_Avg], [Project1].[cnr4_T_K_Avg] AS [cnr4_T_K_Avg], [Project1].[Rn_Avg] AS [Rn_Avg], [Project1].[albedo_Avg] AS [albedo_Avg], [Project1].[GS_2cm_Avg] AS [GS_2cm_Avg], [Project1].[GS_5cm_Avg] AS [GS_5cm_Avg], [Project1].[PAR_Avg] AS [PAR_Avg], [Project1].[TargTempC_Avg] AS [TargTempC_Avg], [Project1].[SBTempC_Avg] AS [SBTempC_Avg], [Project1].[UV_Avg] AS [UV_Avg], [Project1].[dir_Ra_Avg] AS [dir_Ra_Avg], [Project1].[Depth_Avg] AS [Depth_Avg] FROM ( SELECT ISNULL(CONVERT(date,a.TIMESTAMP,121), '1840-06-06') as TIMESTAMP, ISNULL(datepart(hh,a.TIMESTAMP),25)as Hour, avg(a.TA_Avg) AS TA_Avg, Max(a.TA_Avg) AS TA_Avg_Max, Min(a.TA_Avg) AS TA_Avg_Min, avg(a.RH_Avg) AS RH_Avg, sum(a3.Rain_Tot) AS Rain_Tot, avg(a3.WS_Avg) AS WS_Avg, avg(a.Press_Avg) AS Press_Avg, sum(a.Sun_Hour_Tot)/60 AS Sun_Hour_Tot, avg(a.DR_Avg) AS DR_Avg, avg(a.UR_Avg) AS UR_Avg, avg(a.DLR_Avg) AS DLR_Avg, avg(a.ULR_Avg) AS ULR_Avg, avg(a.cnr4_T_C_Avg) AS cnr4_T_C_Avg, avg(a.cnr4_T_K_Avg) AS cnr4_T_K_Avg, avg(a.Rn_Avg) AS Rn_Avg, avg(a.albedo_Avg) AS albedo_Avg, avg(a.GS_2cm_Avg) AS GS_2cm_Avg, avg(a.GS_5cm_Avg) AS GS_5cm_Avg, avg(a.PAR_Avg) AS PAR_Avg, avg(a.TargTempC_Avg) AS TargTempC_Avg, avg(a.SBTempC_Avg) AS SBTempC_Avg, avg(a.UV_Avg) AS UV_Avg, avg(a.dir_Ra_Avg) AS dir_Ra_Avg, avg(a.Depth_Avg) AS Depth_Avg FROM dbo.T_AWS10min as a left join dbo.T_AWS30min a3 on a.TIMESTAMP=a3.TIMESTAMP where (a.[TIMESTAMP] >= @startDate) AND (a.[TIMESTAMP] <= @endDate) GROUP BY CONVERT(date,a.TIMESTAMP,121),datepart(hh,a.TIMESTAMP) ) as Project1 order by Project1.TIMESTAMP,Project1.Hour"; var sqlParams = new SqlParameter[] { new SqlParameter("@startDate",System.Data.SqlDbType.DateTime) {Value= startDate}, new SqlParameter("@endDate",System.Data.SqlDbType.DateTime) {Value= endDate} }; var data1 = db.Database.SqlQuery<V_AWSHour>(sql, sqlParams).ToList(); //.OrderBy(d => new { d.TIMESTAMP, d.Hour });//报错:必须至少有一个对象实现 IComparable。 result.data = new { data1 }; return result; } } else { if (minuteType == 1) { data = db.T_TMS10min.Where(d => d.TIMESTAMP >= startDate && d.TIMESTAMP <= endDate) .Select(d => d); //.Select(d => new //{ // d.ID, // d.TIMESTAMP, // d.RECORD, // d.TS_0cm_Avg, // d.MS_5cm_Avg, // d.EC_5cm_Avg, // d.TS_5cm_Avg, // d.MS_10cm_Avg, // d.EC_10cm_Avg, // d.TS_10cm_Avg, // d.MS_20cm_Avg, // d.EC_20cm_Avg, // d.TS_20cm_Avg, // //d.MS_40cm_Avg, // //d.EC_40cm_Avg, // //d.TS_40cm_Avg, // d.MS_60cm_Avg, // d.EC_60cm_Avg, // d.TS_60cm_Avg, // d.MS_80cm_Avg, // d.EC_80cm_Avg, // d.TS_80cm_Avg, // d.MS_100cm_Avg, // d.EC_100cm_Avg, // d.TS_100cm_Avg //}); } else if (minuteType == 2) { data = db.T_TMS30min.Where(d => d.TIMESTAMP >= startDate && d.TIMESTAMP <= endDate) .Select(d => d); //.Select(d => new //{ // d.ID, // d.TIMESTAMP, // d.RECORD, // d.TS_0cm_Avg, // d.MS_5cm_Avg, // d.EC_5cm_Avg, // d.TS_5cm_Avg, // d.MS_10cm_Avg, // d.EC_10cm_Avg, // d.TS_10cm_Avg, // d.MS_20cm_Avg, // d.EC_20cm_Avg, // d.TS_20cm_Avg, // //d.MS_40cm_Avg, // //d.EC_40cm_Avg, // //d.TS_40cm_Avg, // d.MS_60cm_Avg, // d.EC_60cm_Avg, // d.TS_60cm_Avg, // d.MS_80cm_Avg, // d.EC_80cm_Avg, // d.TS_80cm_Avg, // d.MS_100cm_Avg, // d.EC_100cm_Avg, // d.TS_100cm_Avg //}); } else { data = db.V_TMSHour.Where(d => (d.TIMESTAMP == startDate.Date && d.Hour >= startDate.Hour) || (d.TIMESTAMP == endDate.Date && d.Hour <= endDate.Hour)).Select(d => d).OrderBy(d => new { d.TIMESTAMP, d.Hour }); } } result.data = new { data }; return result; }
public class ApiResult { public bool success { get; set; } public string msg { get; set; } public object data { get; set; } }
T_TMS30min、V_AWSHour、V_TMSHour 是三个不同的实体类
核心操作是:
IQueryable data;
result.data = new { data };
树立目标,保持活力,gogogo!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-06-22 经纬度转百度坐标
2020-06-22 jQuery jsonp(转载)
2020-06-22 vue jsonp (转载)
2018-06-22 echarts tab 切换问题整理
2017-06-22 Thinkphp 全选、反选 批量删除
2017-06-22 Thinkphp 图片上传
2017-06-22 thinkphp 百度编辑器和layer简单用法