2016-11-21 5 views
0

Чтобы получить отличительные значения, мне нужен IEnumerable.Disitinct Dynamic Linq

var results = gridData.Select(r => r.ExplicitColumnName).Distinct(); 

Чтобы определить имя столбца во время выполнения, мне нужно использовать IQueryable в соответствии с требованиями System.Linq.Dynamic.

var results = gridData.AsQueryable().Select(columnNameIsInThisVar); 

Я хочу, чтобы мой метод возвращать JSON так понял Список строки, а затем загрузить его в JsonResult. Но у меня возникают проблемы с получением как отдельных значений, так и гибкости во время выполнения в столбце.

Итак, я думаю, мой вопрос в LINQ, как мне это сделать?

List<string> results = $"select distinct {columnName} from ridiculous_table_with_100_columns"; 

Update 1

Согласно комментариям, я теперь установлен динамический Linq как пакет NuGet, но я до сих пор не может преобразовать в список.

filterValues = gridData.AsQueryable().Select(columnName).Distinct(); 

Который получает меня «не может неявно преобразовать тип„System.Linq.IQueryable“в„System.Collections.Generic.List“. Явное преобразование существует (вы пропали без вести бросок?)»

+0

Добавляем 'Distinct' в конце (после' Select')? Динамический LINQ определяет 'Distinct' на' IQueryable'. –

+0

Динамический Linq не предоставляет метод Distinct. После выбора возвращается IQueryable. Его нужно преобразовать в IEnumerable, но я не могу придумать, как это сделать, не создавая его вручную, итерации по IQueryable, и в этом случае я мог бы просто отфильтровать дубликаты самостоятельно. – twelveFunKeys

+0

Я вижу 'public static IQueryable Distinct (этот источник IQueryable),' inside 'System.Linq.Dynamic.DynamicQueryable'. –

ответ

1

Вы можете сделать это с отражением

var results = gridData.Select(r => r.GetType().GetProperty(colName).GetValue(r)).Distinct(); 

 Смежные вопросы

  • Нет связанных вопросов^_^