Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 如何从datatable中删除连续的重复记录?_C#_Asp.net_Vb.net - Fatal编程技术网

C# 如何从datatable中删除连续的重复记录?

C# 如何从datatable中删除连续的重复记录?,c#,asp.net,vb.net,C#,Asp.net,Vb.net,从这些记录中,我只想要下面的记录,有可能吗 ID Name 1 A 2 B 3 A 5 A 6 A 7 B 10 B 看起来您正在询问如何删除连续的(当被认为是有序的)值 如果我们假设ID值应被视为连续增加而没有间隙,那么可以很容易地完成-只需将左连接返回给您自己,并要求前一行具有不同的值,或者前一行不存在(包括第一行): 也许有更好的办法 在这两种情况下,我都使用: select cur.ID, cur.[Name] from (select ID, [Na

从这些记录中,我只想要下面的记录,有可能吗

ID  Name
1   A   
2   B
3   A
5   A
6   A
7   B
10  B

看起来您正在询问如何删除连续的(当被认为是有序的)值

如果我们假设
ID
值应被视为连续增加而没有间隙,那么可以很容易地完成-只需将左连接返回给您自己,并要求前一行具有不同的值,或者前一行不存在(包括第一行):

也许有更好的办法

在这两种情况下,我都使用:

select cur.ID, cur.[Name]
from (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) cur
left outer join (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) prev
    on prev.[Row] = cur.[Row] - 1
where prev.ID is null or prev.[Name] <> cur.[Name]
order by cur.ID

它似乎与您的预期输出(但不是您声明的输入)相匹配。

看起来您是在询问删除连续的(当被认为是有序的)值

如果我们假设
ID
值应被视为连续增加而没有间隙,那么可以很容易地完成-只需将左连接返回给您自己,并要求前一行具有不同的值,或者前一行不存在(包括第一行):

也许有更好的办法

在这两种情况下,我都使用:

select cur.ID, cur.[Name]
from (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) cur
left outer join (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) prev
    on prev.[Row] = cur.[Row] - 1
where prev.ID is null or prev.[Name] <> cur.[Name]
order by cur.ID

哪个似乎与您的预期输出(但不是您声明的输入)匹配
ID=3
/
C
来自哪里?而
ID=4/A
ID=9/C
从何而来?如果您使用Linq与数据库交互,您应该能够在使用Name列时使用.Distinct(),并以这种方式“消除”重复项。
ID=3
/
C
从何而来?而
ID=4/A
ID=9/C
从何而来?如果您使用Linq与数据库交互,您应该能够在使用Name列时使用.Distinct(),并以这种方式“消除”重复项。
select cur.ID, cur.[Name]
from (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) cur
left outer join (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) prev
    on prev.[Row] = cur.[Row] - 1
where prev.ID is null or prev.[Name] <> cur.[Name]
order by cur.ID
declare @data table (ID int not null, [Name] char(1) not null);
insert @data (ID, [Name]) values (1,'A'),(2,'B'),(3,'C'),(4,'A'),(5,'A'),
    (6,'A'),(7,'B'),(8,'B'),(9,'C'),(10,'B');