如何针对集合调用 Expression>

2024-01-02

我有一个从存储库模式定义存储库的接口:

interface IRepository
{
    List<Customer> GetAllCustomers(Expression<Func<Customer, bool>> expression);
}

我已经针对实体框架实现了它:

class EntityFrameworkRepository
{
    public List<Customer> GetAllCustomers(Expression<Func<Customer, bool>> expression)
    {
        return DBContext.Customers.Where(expression).ToList();
    }
}

这似乎运作良好,它允许我做类似的事情:

var customers = entityFrameworkRepository.Where(
    customer => String.IsNullOrEmpty(customer.PhoneNumber)
);

现在我想要一个 InMemoryRepository 用于测试和演示目的。我尝试创建一个:

class InMemoryRepository
{
    Dictionary<int, Customer> Customers {get; set;} = new Dictionary<int, Customer>();

    public List<Customer> GetAllCustomers(Expression<Func<Customer, bool>> expression)
    {
        //what do I put here?
    }
}

正如你在上面的代码中看到的,我不知道该怎么做InMemoryRepository.GetAllCustomers执行。我应该做什么来按提供的表达式过滤客户并返回结果?

I tried:

return Customers.Where(expression));

但显然它期待着Func<KeyValuePair<int, Customer>, bool>所以我得到一个编译错误:

错误 CS1929“字典”不包含“Where”的定义,并且最佳扩展方法重载“Queryable.Where(IQueryable, Expression>)”需要“IQueryable”DataAccess.InMemory 类型的接收器


Try .AsQueryable() https://msdn.microsoft.com/en-us/library/bb507003(v=vs.110).aspx method:

return Customers.Values.AsQueryable().Where(expression);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何针对集合调用 Expression> 的相关文章

随机推荐

  • 使用电话号码格式 NaN 屏蔽 EditText,就像 PhoneNumberUtils 中一样

    我想让用户在 editText 中输入电话号码 以便每次用户输入号码时动态更改格式 也就是说 当用户输入最多 4 位数字 例如 7144 时 editText 显示 714 4 我希望每当用户输入数字时 editText 就会动态更新为格式
  • HashLocationStrategy 在路由时不生成 # 个位置?

    我正在运行 Angular 2 beta 0 并且正在搞乱路由 这是我所拥有的 应用程序组件 import Component provide from angular2 core import bootstrap from angular
  • 使用 Vue-router 进行 Firebase 身份验证检查

    问题是 vue router 的 beforeEnter 比 main js 中的 beforeCreate 钩子更早触发 并且有第二个延迟 而在重新加载 vuex 操作后将用户设置为状态 这会导致用户被弹回登录页面 如何延迟 vue ro
  • fork后的变量

    这是一个代码 int i 0 pid t pid puts Hello World puts pid fork if pid i 42 printf p n i printf d n i puts 并输出 Hello World 0x7ff
  • 应用程序关闭时如何处理推送负载?

    我正在向我的用户发送包含以下内容的推送负载 aps alert Go To Google sound Default url http www google com 当应用程序在后台运行时 一切顺利 如果我收到推送并且应用程序已关闭 我打开
  • 使用 imread 函数读取 opencv 中的 jpg 文件时是否有任何可能的原因?

    最近在python中使用opencv 正如我注意到的 当我想导入时cv2python中的模块 我需要添加cv2 so使用以下命令手动将文件路径设置为系统路径 sys path append path to cv so 但是 当我想在 ipy
  • 如何正确设置 django-debug-toolbar 的内部 IP

    我第一次编辑setting py文件输入google cloud computing请原谅我这个愚蠢的问题 我想跑django debug toolbar并遵循该教程中的每一步 我想要的是工具栏在 our office only 所以我只是
  • 如何在 Perl 中轻松解析

    我想将网站解析为 Perl 数据结构 首先我加载页面 use LWP Simple my html get http f oo 现在我知道了两种处理方法 首先是正则表达式 其次是模块 我开始阅读有关HTML 解析器 http p3rl or
  • 从 JSON 中选择随机对象[重复]

    这个问题在这里已经有答案了 我有以下代码 getJSON js questions1 json done function data window questionnaire data console log window question
  • Haskell 中遵守模态公理的有趣运算符

    我只是在看类型map a gt b gt a gt b 这个函数的形状让我想知道我们是否可以将列表形成运算符 视为遵守正常模态逻辑 例如 T S4 S5 B 常见的各种公理 因为我们似乎至少有 K 正规模态逻辑公理 其中 a gt b gt
  • git 从 github 远程存储库导出

    我想从 github 远程存储库导出 而不是克隆它 与 svn export 类似 我不想用它获取 git 文件夹 我可以通过克隆和删除 git 文件夹来解决这个问题 我想知道是否有更清洁的方法 我在某个地方读过它 你可以使用 git ar
  • 流星 $and 与 $or

    我正在尝试在 Meteor 中为我的 mongo 查询执行 and 然后 or 我有以下内容 但它似乎不起作用 希望查询匹配 OrganizationId 键在变量 user organizationId 中具有值且类型键为 convert
  • 将 R 数据表列从 JSON 转换为数据表

    我有一个包含 JSON 数据的列 如下例所示 library data table test lt data table a list 1 2 3 info list duration 10 country US duration 20 c
  • 是否可以在 pdf 中向使用 R knit::kable 生成的表格添加垂直线?

    我想制作一张桌子knitr kable边界上和某些列之间有垂直线 有办法做到吗 我的输出文档是pdf Thanks 不太清楚 但也许这可以帮助 library knitr library kableExtra library dplyr d
  • 如何关闭笔记本中的初始化单元?

    在我的笔记本中 我有一个相当大的初始化单元 如何使其可关闭 我的意思是我怎样才能将这个单元格卷成一行并能够将其展开呢 经典的解决方案是将初始化单元放入其自己的部分 Alt 4 标题为 初始化 此部分位于笔记本的开头或结尾 要隐藏内容 请关闭
  • JDialog 让主应用程序失去焦点

    我想知道为什么我的 JDialog 将我的主应用程序推入后台 这意味着 如果显示 JDialog 并且用户单击 确定 或 取消 则主应用程序将失去焦点并将被推入后台 经过调查 我发现 只有当我在显示 JDialog 时禁用主框架时 才会发生
  • 我的 Apache CXF 客户端出现问题

    我正在尝试编写一个 Apache CXF JAX WS 客户端 我的依赖项pom xml are
  • 如何禁用 html5 canvas 元素的选择

    我监听 html5 画布内的点击事件 它工作得很好 但是 当我单击图像上的任意位置时 浏览器会突出显示该图像 就好像它已被选中一样 类似于在页面上单击时图像可能会突出显示的方式 我很好奇是否有人知道如何禁用选择 html 元素 例如画布 我
  • 在多个转换中保持键控状态

    我有一个流 我想使用某个键对其进行分区 然后运行多个转换 每个转换使用一个状态 当我打电话时keyBy 我得到一个KeyedStream下一个转换可以正确访问分区状态 但之后链接的另一个转换在尝试访问分区状态时会出现异常 例外的是 状态密钥
  • 如何针对集合调用 Expression>

    我有一个从存储库模式定义存储库的接口 interface IRepository List