不同的动态 Linq

Disitinct Dynamic Linq

要获得不同的值,我需要一个 IEnumerable。

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

要在 运行 时确定列名称,我需要根据 System.Linq.Dynamic 的要求使用 IQueryable。

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

我希望我的方法 return json 计算出字符串列表,然后将其加载到 JsonResult 中。但是我在获取不同的值和 运行 列上的时间灵活性时遇到了问题。

所以我想我的问题是,在 LINQ 中,我该怎么做?

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

更新 1

根据评论,我现在已经将动态 Linq 安装为 nuget 包,但我仍然无法转换为 List。

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

这让我得到了 "Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Collections.Generic.List'. An explicit conversion exists (are you missing a cast?)"

你可以用反射来做到这一点

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