2017-10-11 112 views
2

改变列表或枚举行我有一个DataTable:我怎样才能返回,其中列值已经使用LINQ

Position Price 
1  1.2 
1  1.3 
2  1.25 
1  1.4 
1  1.3 
2  1.35 

我想回到这里的位置已经改变了所有行:

Position Price 
2  1.25 
1  1.4 
2  1.35 

Linq有没有一种优雅的方式来做到这一点?

我想:

var trades = Enumerable.Range(1, Data.Rows.Count - 1) 
       .Where(i => !Data.Rows[i].Field<string>("Position").Equals(Data.Rows[i - 1].Field<string>("Position"))); 

但这返回索引列表,而不是行。

+0

你尝试过什么呢? – Backs

+0

@Backs请参阅编辑问题请 – ManInMoon

+0

为什么你选择两次两次,但只有一次? – Rahul

回答

4

使用LINQ:

var positionChanges = table.AsEnumerable() 
    .Skip(1) 
    .Where((row, index) => table.Rows[index - 1].Field<string>(0) != row.Field<string>(0)); 
+0

完美。这就是我一直在寻找的 – ManInMoon