不同的动态 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();
要获得不同的值,我需要一个 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();