Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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/mysql/63.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# 具有数据类型的查询_C#_Mysql_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 具有数据类型的查询

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++) {

我向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++)
{
    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,
}