【问题标题】:Convert IQueryable<T> or LINQ query to unique string将 IQueryable<T> 或 LINQ 查询转换为唯一字符串
【发布时间】:2012-01-10 10:39:11
【问题描述】:

我有一些 LINQ 查询(或基于 LINQ 查询的 IQueryable&lt;T&gt; 对象)并希望根据此查询获取一些唯一字符串。

我有,例如:

var someValue = 10;
var query = (from i in db.Customers
            where i.Id == someValue
            select i).AsQueryable();

我应该得到这样的东西:

“来自 i in db.Customers where i.Id == 10”

我正在尝试使用 Expression 对象并使用它,但我无法获得通用方法来获取具有 exact 参数值的字符串。

例如:

public string GetKey<T>(IQueryable<T> query)
{
  ...
  return unique_string;
}

请注意,同一 LINQ 查询的不同参数值应提供不同的字符串。

提前致谢。

【问题讨论】:

    标签: c# .net linq expression-trees iqueryable


    【解决方案1】:

    我强烈怀疑这根本行不通。除此之外,如果您必须使用AsQueryable(即,如果您的原始查询结束于IEnumerable&lt;T&gt;,那么编译器将使用委托而不是表达式树开始。

    如果它是一个 IQuerable&lt;T&gt;,你可以尝试使用query.Expression.ToString(),但坦率地说,这不是我想要依赖的东西。

    【讨论】:

      【解决方案2】:

      Expression Tree Serialization 解决了这个问题,并在获取传递参数的精确值方面做了一些改进。它提供了一个基于 IQueryable 对象的大型但唯一 XML 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-04
        • 2010-11-25
        • 2011-01-04
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多