Home Articles

Disitinct Dynamic Linq

Asked
Viewed 1233 times
0

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

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

要在运行时确定列名,我需要使用System.Linq.Dynamic所需的IQueryable .

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

我希望我的方法返回json所以想到字符串List然后将其加载到JsonResult中 . 但是我在列上获得不同的值和运行时灵活性时遇到了问题 .

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

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

更新1

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

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

这让我得到了“无法隐式转换类型'System.Linq.IQueryable'到'System.Collections.Generic.List' . 存在显式转换(你错过了一个演员?)”

1 Answer

  • 1

    你可以用反射做到这一点

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

Related