Я бы сделал что-то вроде этого:
var sourceItems = ds.Tables[0].AsEnumerable()
.Select(x => x.Field<string>("Source"))
.Distinct()
.ToList();
Обратите внимание, что .ToList()
можно пропустить, но, конечно, это зависит от того, что свойство DataSource
объекта ddlSource
может принять. Если это контроль winforms, я подозреваю, ToList
необходимо.
Ваш код в основном такой же, как этот, но вы должны изменить последний Select
на Select(x => x.Key)
, чтобы выбрать значения, которые используются для группировки строк, а не первую строку.
Кроме того, ваш код требует больше ресурсов, чем при использовании Distinct
, так как GroupBy
создает подгруппы исходной коллекции.