为什么此过滤器在List <T>上而不在IQueryable <T>上起作用?

检察官

我需要创建一个扩展方法,该方法将List<TSource>根据验证规则列表过滤集合List<<IRule>, bool>但是我收到错误消息VisitSubQueryExpression method is not implemented,但看不到/找不到问题的原因。

这是我的扩展方法:

public static List<TSource> ValidItems<TSource>(this IQueryable<TSource> source, 
                                  List<IValidationRule<TSource>> validationRules)
{
     return source.Where(testableItem => 
            validationRules.All(rule => rule.RulePassed(testableItem))).ToList();
}

IRule界面:

public interface IValidationRule<T> //with implementation class ValidationRule<T>
{
    Func<T, bool> RulePassed { get; set; }
    //... +other code
}

扩展方法调用样本

//initialization of List<SampleType> listToValidate = ... 
var validItems = listToValidate.ValidItems(
                  new List<IValidationRule<SampleType>() {
                       new ValidationType<SampleType> {
                       RulePassed = (s) => string.IsNullOrWhiteSpace(SampleType.Name), 
                       //...initalize other ValidationType parameters
                       }
                   });

此示例应过滤listToValidate列表并删除所有SampleType实例,其Name属性为Null或空白

我的扩展方式有什么问题?此“ VisitSubQueryExpression方法未实现”错误是什么意思?

如果我将其更改为List<TSource>不是的扩展方法,IQueryable<TSource>则可以使用!为什么?

替换this IQueryable<TSource>this List<TSource>,为什么有效?Where方法应该适用于IQueryable<T>(继承自IEnumerable<T>),不是吗?

public static List<TSource> ValidItems<TSource>(this List<TSource> source, 
                                  List<IValidationRule<TSource>> validationRules)
{
     return source.Where(testableItem => 
            validationRules.All(rule => rule.RulePassed(testableItem))).ToList();
}
ush

rule.RulePassed的IQueryable提供程序无法翻译您的内容。

public static List<TSource> ValidItems<TSource>(this IQueryable<TSource> source, 
                              List<IValidationRule<TSource>> validationRules)
{
    var result = new List<TSource>();
    foreach (var testableItem in source)
    {
        if (validationRules.All(rule => rule.RulePassed(testableItem))
        {
            result.Add(testableItem);
        }
    }
    return result;
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此过滤器在List <T>上而不在IQueryable <T>上起作用?

来自分类Dev

为什么AsQueryable <T>不暗示_t鉴别符上的过滤器

来自分类Dev

为什么一个变量在一页上起作用而不在另一页上起作用?

来自分类Dev

ImportError:在osx上起作用而不在ubuntu上起作用

来自分类Dev

为什么此dynamic_cast <T>不起作用?

来自分类Dev

为什么此dynamic_cast <T>不起作用?

来自分类Dev

为什么我的熊猫过滤器在单独的步骤中起作用,而不在一个命令中起作用?

来自分类Dev

为什么只在JSfiddle上起作用?

来自分类Dev

为什么 List<T> 属性的通知不起作用

来自分类Dev

为什么此代码在结构数组上起作用?

来自分类Dev

ImageView setMatrix仅在图像上起作用而不在画布上起作用

来自分类Dev

VBA宏在工作表1上起作用,但不在工作表2上起作用

来自分类Dev

创建IQueryable <T>的通用过滤器,其中该过滤器使用ISomeInterface中定义的属性

来自分类Dev

为什么setAttribute'false'可以在另一个按钮上起作用,而不能在Javascript上对self起作用?

来自分类Dev

为什么setAttribute'false'可以在另一个按钮上起作用,而不能在Javascript上对self起作用?

来自分类Dev

为什么此Powershell-或过滤器不起作用?

来自分类Dev

为什么此切换和过滤器在Vue JS中不起作用?

来自分类Dev

为什么文件夹在无限列表上起作用?

来自分类Dev

为什么在Option [T]的HList上映射不起作用?

来自分类Dev

Scala string.count('\ t'==)为什么起作用?

来自分类Dev

为什么pip -t在Ubuntu 15.04上不起作用?

来自分类Dev

mcrypt函数在旧服务器上起作用而不在新服务器上起作用

来自分类Dev

为什么我的过滤器不起作用

来自分类Dev

为什么过滤器不起作用?

来自分类Dev

IQueryable <T>与List <T>给出的结果不同

来自分类Dev

为什么在Debian上用`sha256sum`验证SHA256校验和失败并在Ubuntu上起作用?

来自分类Dev

在IQueryable <T>上应用多个组函数

来自分类Dev

当在代码中添加过滤器CSS时,为什么此衰落函数不起作用?

来自分类Dev

为什么我的代码在jsFiddle上起作用,但在本地不起作用

Related 相关文章

  1. 1

    为什么此过滤器在List <T>上而不在IQueryable <T>上起作用?

  2. 2

    为什么AsQueryable <T>不暗示_t鉴别符上的过滤器

  3. 3

    为什么一个变量在一页上起作用而不在另一页上起作用?

  4. 4

    ImportError:在osx上起作用而不在ubuntu上起作用

  5. 5

    为什么此dynamic_cast <T>不起作用?

  6. 6

    为什么此dynamic_cast <T>不起作用?

  7. 7

    为什么我的熊猫过滤器在单独的步骤中起作用,而不在一个命令中起作用?

  8. 8

    为什么只在JSfiddle上起作用?

  9. 9

    为什么 List<T> 属性的通知不起作用

  10. 10

    为什么此代码在结构数组上起作用?

  11. 11

    ImageView setMatrix仅在图像上起作用而不在画布上起作用

  12. 12

    VBA宏在工作表1上起作用,但不在工作表2上起作用

  13. 13

    创建IQueryable <T>的通用过滤器,其中该过滤器使用ISomeInterface中定义的属性

  14. 14

    为什么setAttribute'false'可以在另一个按钮上起作用,而不能在Javascript上对self起作用?

  15. 15

    为什么setAttribute'false'可以在另一个按钮上起作用,而不能在Javascript上对self起作用?

  16. 16

    为什么此Powershell-或过滤器不起作用?

  17. 17

    为什么此切换和过滤器在Vue JS中不起作用?

  18. 18

    为什么文件夹在无限列表上起作用?

  19. 19

    为什么在Option [T]的HList上映射不起作用?

  20. 20

    Scala string.count('\ t'==)为什么起作用?

  21. 21

    为什么pip -t在Ubuntu 15.04上不起作用?

  22. 22

    mcrypt函数在旧服务器上起作用而不在新服务器上起作用

  23. 23

    为什么我的过滤器不起作用

  24. 24

    为什么过滤器不起作用?

  25. 25

    IQueryable <T>与List <T>给出的结果不同

  26. 26

    为什么在Debian上用`sha256sum`验证SHA256校验和失败并在Ubuntu上起作用?

  27. 27

    在IQueryable <T>上应用多个组函数

  28. 28

    当在代码中添加过滤器CSS时,为什么此衰落函数不起作用?

  29. 29

    为什么我的代码在jsFiddle上起作用,但在本地不起作用

热门标签

归档