C# 具有数据类型的查询
我向db提出了一个请求 这里没问题C# 具有数据类型的查询,c#,mysql,asp.net,asp.net-mvc,C#,Mysql,Asp.net,Asp.net Mvc,我向db提出了一个请求 这里没问题 var allitems = ctx.Logging; var filteredQuery = allitems.Where(x => x.Datatype == 1 || x.Datatype == 2) .OrderByDescending(x => x.Id).ToList(); for (int i = 1; i < filteredQuery.Count; i++) {
var allitems = ctx.Logging;
var filteredQuery = allitems.Where(x => x.Datatype == 1 || x.Datatype == 2)
.OrderByDescending(x => x.Id).ToList();
for (int i = 1; i < filteredQuery.Count; i++)
{
if (filteredQuery[i].Datatype == 2 && filteredQuery[i - 1].Datatype == 1)
{
TimeSpan differenceTicks = filteredQuery[i - 1].CurDateTime - filteredQuery[i].CurDateTime;
items.Add(new HeatMapViewModel
{
Latitude2 = filteredQuery[i].Latitude2,
Longitude2 = filteredQuery[i].Longitude2,
Difference = (int)differenceTicks.TotalMinutes
});
}
}
如果要获取
数据类型
为1
或2
,则应使用相同的类型使其具有可比性
EF尝试验证运算符,他们可以在字节类型和整数类型的枚举之间进行比较
当您将2
更改为(数据类型?)2
时,意味着您将2
整数解析为数据类型。停止
因此,您的代码应该更改为
var filteredQuery=allitems.Where(x=>x.Datatype==Datatype.Start | | x.Datatype==Datatype.Stop).OrderByDescending(x=>x.Id).ToList();
用于可读性和性能。什么是数据类型?你能展示一下你是如何声明数据类型的吗?我更新了我的帖子@S.akbari你也可以使用.Where(x=>x.Datatype==Datatype.Start | | x.Datatype==Datatype.Stop)
为什么你要声明它为空?为什么不干脆公共数据类型Datatype{get;set;}
?事实上,使用枚举来实现它们的目的!您不想与1
(幻数!)进行比较,而是要与数据类型进行比较。开始
。
public Datatype? Datatype { get; set; }
public enum Datatype : byte
{
Position = 0,
Start = 1,
Stop = 2,
AddressRequest = 3,
Alarm = 4,
IP = 5,
SettingsAck = 6,
Input3Changed = 7,
Input4Changed = 8,
ActivationSMS = 9,
}