String Concatenation and Comparison
It's interesting to notice that when you parse your input, you break a comma-separated string into a list of values. The end result of your code can be achieved much more cleanly if you take a similar (but inverted) approach, i.e. generate a list of values and then have the comma-separated string generated from that list.

It's counterintuitive for the logical branching in your code to be significantly more complex than the logical branching in your description of the behavior. These should map one to one. You can just translate your pseudocode logic exactly as is.  

The reason your code ended up being more complex is because you needed to add the whole "add a comma or don't" logic to it - which can be avoided by relying on String.Join, which performs that logic for you, as long as you supply it with a collection of values.


  If list contains R the Readstatus="Y"
  If list contains UR the Readstatus="N"  




Dim readStatusList As New List(Of String)

If listStatus.Contains("R") Then
    readStatusList.Add("Y")
End If
If listStatus.Contains("UR") Then
    readStatusList.Add("N")
End If

Dim readStatus As String = String.Join(",", readStatusList)


The exact same applies to the "done" status:


  If list contains DO the Donestatus="Y"
  If list contains NDO the Donestatus="N"  




Dim doneStatusList As New List(Of String)

If listStatus.Contains("DO") Then
    doneStatusList.Add("Y")
End If
If listStatus.Contains("NDO") Then
    doneStatusList.Add("N")
End If

Dim doneStatus As String = String.Join(",", doneStatusList)