如何在我动态选择的列上执行不同的操作?

时间:2011-04-13 20:43:01

标签: linq dynamic-linq

我正在使用动态linq并动态选择列。我需要做一个与众不同的事情。我怎么能这样做?

var qry = tbl.AsEnumerable().AsQueryable()
             .Select("new(it[\"" + this.UniqueName + "\"]
             .ToString() as " + this.UniqueName + ")");

感谢。

1 个答案:

答案 0 :(得分:4)

而不是使用

as " + this.UniqueName + "

DO

as someFixedColumnName

并使用普通Linq运行Distinct()子句。


或者,您可以尝试this extension method:

public static IQueryable DynamicDistinct(this IQueryable source)
{
    if (source == null) throw new ArgumentNullException("source");
    return source.Provider.CreateQuery(
        Expression.Call(
            typeof(Queryable), "Distinct",
            new Type[] { source.ElementType },
            source.Expression));
}