有没有一种方法可以使用System.Linq.Dynamic查询类型

c

我有“ A”类,其中有“ B”类的集合。“ D”是具有属性“ DMatter”的“ B”的子类(不是从“ B”继承的)

我可以使用常规Linq选择具有某些内容的“ D”的“ A”:

 var result = 
    Aset.Where(a => a.Bs.OfType<D>().Any(d => d.DMatter.Contains("ii"))); //works!

我可以像这样动态地改变B的属性:

 var result = Aset.Where("Bs.Any(BStuff.Contains(\"bb\"))");//works!

但是我找不到这样的方法:

result = Aset.Where("Bs.OfType<D>().Any(DMatter.Contains(\"ii\"))");//Explodes!

有什么办法吗?

康拉德·科科萨(Konrad Kokosa)

查看的代码System.Linq.Dynamic.ExpressionParser,很OfType遗憾,似乎没有实现解析。请参阅本文,提供解决方法作为IQueryable扩展方法。似乎这是您无需深入了解System.Linq.Dynamic.ExpressionParser源代码就能获得的最大收益

public static class MyQueryExtensions
{
    public static IQueryable OfType(this IQueryable source, string typeStr)
    {
        if (source == null)
        {
            throw new ArgumentNullException("source");
        }
        if (typeStr == null)
        {
            throw new ArgumentNullException("typeStr");
        }

        Type type = Assembly.GetExecutingAssembly().GetType(typeStr);
        MethodInfo methodOfType = typeof(Queryable).GetMethods().First(m => m.Name == "OfType" && m.IsGenericMethod);

        return source.Provider.CreateQuery(Expression.Call(null, methodOfType.MakeGenericMethod(new Type[] { type }), new Expression[] { source.Expression }));
    }
}

然后您可以:

var result = someList.OfType("SomeNamespace.SomeClass");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以在linq查询中参数化方法?

来自分类Dev

有没有一种方法可以根据参数更改LINQ查询orderBy?

来自分类Dev

有没有一种方法可以简化具有多对一关系的Linq查询?

来自分类Dev

有没有一种方法可以简化具有多对一关系的Linq查询?

来自分类Dev

有没有一种方法可以强制将LINQ中生成的查询的const内联到SQL?

来自分类Dev

有没有一种方法可以从LINQ查询的.include(中选择某些字段?

来自分类Dev

有没有一种方法可以阻止LINQ查询在LINQPAD之类的工具中检索所有嵌套查询?

来自分类Dev

有没有一种方法可以在Linq2Db中多次引用已编译查询中的同一CTE?

来自分类Dev

有没有一种方法可以在Linq2Db中多次引用已编译查询中的同一CTE?

来自分类Dev

有没有一种方法可以使SQL NOT IN查询更快?

来自分类Dev

有没有一种方法可以使SQLAlchemy预编译查询?

来自分类Dev

有没有一种方法可以使函数返回类型名?

来自分类Dev

有没有一种方法可以使用merge语句将此查询转换为Oracle查询?

来自分类Dev

有没有一种方法可以使用对象的类型作为类型参数的参数?

来自分类Dev

有没有一种方法可以使SQL日志使用CloudSQL查看/优化我的查询

来自分类Dev

有没有一种方法可以使用子查询列值更新xml列?

来自分类Dev

有没有一种方法可以使用Visual Studio进行符合SQL标准的查询?

来自分类Dev

有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

来自分类Dev

有没有一种方法可以使用媒体查询来使文本显得更小?

来自分类Dev

有没有一种方法可以使用wbemtest导出WMI查询的结果?

来自分类Dev

有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

来自分类Dev

有没有一种方法可以使用Boost Test测试非类型模板?

来自分类Dev

有没有一种方法可以使用动态字段名称构建类型接口?

来自分类Dev

有没有一种方法可以使构造函数接受两种可能的参数类型?

来自分类Dev

有没有一种方法可以强制Solr查询不使用缓存?

来自分类Dev

有没有一种方法可以在C ++中使用类型文字?

来自分类Dev

有没有一种方法可以使用Linq将IEnumerable组织为以列为主的格式的批处理?

来自分类Dev

有没有一种方法可以使用LINQ更新通用列表,而不是删除列表的成员并将其添加回去?

来自分类Dev

有没有一种方法可以通过LINQ语句获得行数?

Related 相关文章

  1. 1

    有没有一种方法可以在linq查询中参数化方法?

  2. 2

    有没有一种方法可以根据参数更改LINQ查询orderBy?

  3. 3

    有没有一种方法可以简化具有多对一关系的Linq查询?

  4. 4

    有没有一种方法可以简化具有多对一关系的Linq查询?

  5. 5

    有没有一种方法可以强制将LINQ中生成的查询的const内联到SQL?

  6. 6

    有没有一种方法可以从LINQ查询的.include(中选择某些字段?

  7. 7

    有没有一种方法可以阻止LINQ查询在LINQPAD之类的工具中检索所有嵌套查询?

  8. 8

    有没有一种方法可以在Linq2Db中多次引用已编译查询中的同一CTE?

  9. 9

    有没有一种方法可以在Linq2Db中多次引用已编译查询中的同一CTE?

  10. 10

    有没有一种方法可以使SQL NOT IN查询更快?

  11. 11

    有没有一种方法可以使SQLAlchemy预编译查询?

  12. 12

    有没有一种方法可以使函数返回类型名?

  13. 13

    有没有一种方法可以使用merge语句将此查询转换为Oracle查询?

  14. 14

    有没有一种方法可以使用对象的类型作为类型参数的参数?

  15. 15

    有没有一种方法可以使SQL日志使用CloudSQL查看/优化我的查询

  16. 16

    有没有一种方法可以使用子查询列值更新xml列?

  17. 17

    有没有一种方法可以使用Visual Studio进行符合SQL标准的查询?

  18. 18

    有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

  19. 19

    有没有一种方法可以使用媒体查询来使文本显得更小?

  20. 20

    有没有一种方法可以使用wbemtest导出WMI查询的结果?

  21. 21

    有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

  22. 22

    有没有一种方法可以使用Boost Test测试非类型模板?

  23. 23

    有没有一种方法可以使用动态字段名称构建类型接口?

  24. 24

    有没有一种方法可以使构造函数接受两种可能的参数类型?

  25. 25

    有没有一种方法可以强制Solr查询不使用缓存?

  26. 26

    有没有一种方法可以在C ++中使用类型文字?

  27. 27

    有没有一种方法可以使用Linq将IEnumerable组织为以列为主的格式的批处理?

  28. 28

    有没有一种方法可以使用LINQ更新通用列表,而不是删除列表的成员并将其添加回去?

  29. 29

    有没有一种方法可以通过LINQ语句获得行数?

热门标签

归档