Если вы хотите использовать LINQ, вам лучше поговорить об источнике и селекторе; некоторые IQueryable<T>
и что-то вроде Expression<Func<T,string>>
. Если вы хотите использовать имена столбцов / таблиц, сначала они должны быть внесены в белый список (никогда не принимайте имена из, скажем, веб-запроса), но код будет простым:
var values = dataContext.ExecuteQuery<string>("select distinct [" + columnName
+ "] from [" + tableName +"]").ToList();
это довольно наивный подход, но он показывает основное использование; тогда вы бы связали данные как обычно. Однако я бы гораздо больше склонялся к тому, чтобы вызывающий код просто делал, например:
var values = dataContext.SomeTable.Select(x => x.SomeProperty)
.Distinct().ToList();
, что позволит избежать риска инъекции и т. Д.