0
要获得不同的值,我需要一个IEnumerable。Disitinct动态Linq
var results = gridData.Select(r => r.ExplicitColumnName).Distinct();
要在运行时决定列名,我需要使用System.Linq.Dynamic所需的IQueryable。
var results = gridData.AsQueryable().Select(columnNameIsInThisVar);
我想我的方法返回json所以计算字符串列表,然后加载到JsonResult。但是我在列上获得不同的值和运行时灵活性时遇到了问题。
所以我想我的问题是,在LINQ中,我该如何做到这一点?
List<string> results = $"select distinct {columnName} from ridiculous_table_with_100_columns";
更新1
按照意见,我现在已经安装了动态的LINQ作为NuGet包,但我仍然不能转换到列表。
filterValues = gridData.AsQueryable().Select(columnName).Distinct();
它得到了我一个“无法隐式转换类型‘System.Linq.IQueryable’到‘System.Collections.Generic.List’。一个显式转换存在(是否缺少强制转换?)”
通过在末尾添加'Distinct'(在'Select'之后)?动态LINQ在'IQueryable'上定义'Distinct'。 –
动态Linq不提供独特的方法。选择之后,返回一个IQueryable。它需要转换为IEnumerable,但我想不到通过迭代IQueryable手动构建它的方法,在这种情况下,我可能会自己过滤出重复项。 – twelveFunKeys
我看到'public static IQueryable Distinct(this IQueryable source);'System.Linq.Dynamic.DynamicQueryable'内部''。 –