# Visual Basic > Visual Basic .NET > VS 2019 DataViewRowState vs. RowState vs. DataRowVersion

## Mark@SF

I need some help sorting out the differences between DataViewRowState enum vs. RowState property vs. DataRowVersion parameter.  It seems like there is some overlap/redundancy in these terms.  What is the purpose for having so many ways to seemly describe the same thing?

For example, the DataViewRowState enums include ModifiedCurrent and ModifiedOriginal but the RowState only has a Modified value.

This might just be a semantics/terminology issue, but it is confusing.  The following Microsoft links don't cross-reference these terms.

https://learn.microsoft.com/en-us/do...d-row-versions

https://learn.microsoft.com/en-us/do...e?view=net-7.0

----------


## jmcilhinney

The Rows collection of a DataTable contains all the DataRows in the table. Each DataRow can contain multiple versions of the data for that row, depending on its RowState, which is type DataRowState. For instance, if the RowState is Modified, there will be both Original and Current versions of the data.

A DataView is a specific view of the data in a DataTable. It can be sorted and filtered on both the data and the state of the data. For instance, a DataView might expose the Original version of Modified rows or it might expose the Current version of Modified rows, hence the DataViewRowState has both ModifiedOriginal and ModifiedCurrent values.

It's not really particularly complex. Either you're working with a DataTable or you're working with a DataView. If the former, DataViewRowState is irrelevant and if the latter then DataRowState is irrelevant. The DataRowState of a DataRow tells you what state the row is in and the DataRowVersion allows you to get a particular version of the data based on that state.

----------

