Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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/1/database/8.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# 使用LINQ将数据库记录添加到表的顶部而不是底部_C#_Database_Linq_Sorting - Fatal编程技术网

C# 使用LINQ将数据库记录添加到表的顶部而不是底部

C# 使用LINQ将数据库记录添加到表的顶部而不是底部,c#,database,linq,sorting,C#,Database,Linq,Sorting,您好,我目前有一个程序,它检索WMI信息并将其存储到数据库中,在一段时间后,旧记录将被删除。目前,我让我的程序删除超过10分钟的记录,并在用新信息填充数据库后每隔2分钟检查一次。在另一个每2分钟运行一次的计时器中,存储在数据库中的信息将显示给用户,其显示顺序与它在数据库表中的显示顺序相同 我遇到的问题是,当程序在10分钟后从新数据库运行时,记录被删除,而不是将新记录添加到数据库表的末尾,它们显示在顶部。一旦删除了一些旧数据,当程序重新打开时,数据库中已经填充了现有数据,也会发生这种情况 下面我添

您好,我目前有一个程序,它检索WMI信息并将其存储到数据库中,在一段时间后,旧记录将被删除。目前,我让我的程序删除超过10分钟的记录,并在用新信息填充数据库后每隔2分钟检查一次。在另一个每2分钟运行一次的计时器中,存储在数据库中的信息将显示给用户,其显示顺序与它在数据库表中的显示顺序相同

我遇到的问题是,当程序在10分钟后从新数据库运行时,记录被删除,而不是将新记录添加到数据库表的末尾,它们显示在顶部。一旦删除了一些旧数据,当程序重新打开时,数据库中已经填充了现有数据,也会发生这种情况

下面我添加了代码,显示如何将数据添加到数据库以及如何删除数据(这发生在两个不同的类中)。在下面,我保留了一些示例输出数据,以便您能够理解我的意思

基本上,我需要一种方法来解决这个问题,因为数据需要按照它根据日期时间收集的顺序显示,所以如果你能发现任何东西,我会很感激,如果不是,最好的解决方法是在数据显示之前对其进行排序吗

DateTime dateTime = DateTime.Now.Subtract(new TimeSpan(0, 0, 10, 0));

var result2 = (from b in hddInfo
               where b.DateTime < dateTime
               select b).DefaultIfEmpty();

foreach (TblHDDInfo record2 in result2)
{
        if (record2 != null)
        {
        localDB.TblHDDInfo.DeleteOnSubmit(record2);
        }
}

localDB.SubmitChanges();

TblHDDInfo hddInfoAdd = new TblHDDInfo();
                            hddInfoAdd.DeviceID = deviceID;
                            hddInfoAdd.IpAdd = ipAdd;
                            hddInfoAdd.Size = size;
                            hddInfoAdd.FreeSpace = freeSpace;
                            hddInfoAdd.DateTime = dateTime;
                            localDB.TblHDDInfo.InsertOnSubmit(hddInfoAdd);

                            localDB.SubmitChanges();
DateTime DateTime=DateTime.Now.Subtract(新的时间跨度(0,0,10,0));
var result2=(来自hddInfo中的b)
其中b.DateTime
第一次 硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:27:21

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:29:26

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:31:31

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:33:36

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:35:41

第二次 硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:37:46

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:29:26

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:31:31

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:33:36

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:35:41

第三次 硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:39:51

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:37:46

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:29:26

硬盘大小:186GB 剩余空间:157GB 日期时间:19/07/2009 17:31:31

硬盘大小:186GB 剩余空间:157GB
DateTime:19/07/2009 17:33:36

为什么不在LINQ查询中添加orderby b.DateTime


只是澄清一下:数据库本质上是无序的,插入的位置是不确定的,因此,在与DB进行代码交互时,实际表中的行位置在抽象级别上是一个毫无意义的概念。您必须按一个或多个字段对DB输出进行排序才能应用排序。

我不能100%确定您要完成什么,因为数据库表中没有“顶部”和“底部”。但是,这行代码

hddInfoAdd.DateTime = dateTime;
。。。对我来说似乎是错的。是不是应该像

hddInfoAdd.DateTime = DateTime.Now;

DB理论的核心租户之一是,数据是按未排序的方式存储的。其想法是,人们可能希望通过多种方式对数据进行排序,因此对原始存储应用特定的排序顺序是浪费的。DBMS按照插入的顺序显示未排序的数据只是一个意外/实现细节(我也见过这样的情况)


如果您希望数据具有特定的顺序,那么应该使用ORDERBY子句(以及潜在的索引)显式地应用该要求

SQL中唯一的顺序是使用基于列值的order BY施加的顺序

所有其他明显的行顺序相同。


如果要控制外观顺序,则必须添加列来控制它,并在选择项上使用order BY来实现它。如果您已经有了列(dateTime),那么您只需添加ORDER BYs

Ye抱歉,我之前收集了dateTime,它适用于所有RecordScheer。我对C#和LINQ是相当陌生的,没有想到,抱歉,我是n00b