转换IQueryable< T>或LINQ查询唯一字符串
本文关键字:LINQ 查询 唯一 字符串 IQueryable 转换 | 更新日期: 2023-09-27 18:16:42
我有一些LINQ查询(或基于LINQ查询的IQueryable<T>
对象),并希望基于此查询获得一些唯一的字符串。
我有,例如:
var someValue = 10;
var query = (from i in db.Customers
where i.Id == someValue
select i).AsQueryable();
我应该得到这样的东西:
"from I in db. "i.Id == 10"
我试图使用表达式对象和玩它,但我不能得到通用的方法来获得字符串与确切的参数值。
例如:
public string GetKey<T>(IQueryable<T> query)
{
...
return unique_string;
}
注意,对于同一个LINQ查询,不同的参数值应该提供不同的字符串。
我强烈怀疑这根本行不通。除此之外,如果您必须使用AsQueryable
(即,如果您的原始查询超过IEnumerable<T>
,那么编译器将使用委托而不是表达式树开始。
如果一直是纯 IQuerable<T>
,您可以尝试使用query.Expression.ToString()
,但坦率地说,这不是我想要依赖的东西。
用表达式树序列化解决了这个问题,并改进了获取传递参数的精确值。它提供了一个大而独特的 XML文件,基于可查询对象。