as 3 10 was not in output only the first from duplicated group. This can be the case as a rule let stay the last one or maybe it was overseen.
Case 1 All duplicated rows and empties will be filtered out
Result | Datatype: List(Of DataRow) =
(From d in dtData.AsEnumerable
Group d by k=d("Value").toString.Trim into grp=Group
Let hasBlank = grp.Any(Function (x) IsNothing(x("Value")) orElse String.IsNullOrEmpty(x("Value").toString.Trim))
Let doPass = {grp.Count > 1, hasBlank}.Any(Function (b) b)
Where doPass
Select g=grp.ToList).SelectMany(Function (x) x).toList