如何使用Linq返回列值已更改的列表或可枚举行

时间:2017-10-11 08:31:35

标签: c# linq datatable

我有一个DataTable:

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")));

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

1 个答案:

答案 0 :(得分:4)

使用LINQ:

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