在实体框架中创建动态 linq 排序和搜索顺序语句时

2024-01-02

我正在尝试构建一个函数来根据某些参数动态生成不同的查询。我对 LINQ 语法有点困惑,不确定我是否做对了。

字符串类型参数集是“search”(用于搜索文本框值)、“searchfield”(搜索内容)、“limit_begin”、“limit_end”用于表示行数和从何处开始。 “order_by”表示按哪个字段排序。 “order_sort”用于排序的方式。

我之前在 stackoverflow 上发现了这个“getpropertyvalue”反射函数,我希望它能够根据我自己的解释实现我的意图。

 private static object GetPropertyValue(object obj, string property)
    {
        System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
        return propertyInfo.GetValue(obj, null);
    }

if (order_sort == "ASC")
        {
            (from a in entities.UserTable
             where GetPropertyValue(a, searchfield).ToString().Contains(search)
             select a)
                .OrderBy("a." + order_by)
                .Skip(Convert.ToInt32(limit_begin))
                .Take(Convert.ToInt32(limit_end))
                .ToList();
        }
        else if (order_sort == "DESC")
        {
            (from a in entities.UserTable
             where GetPropertyValue(a, searchfield).ToString().Contains(search)
             select a)
                .OrderByDescending("a." + order_by)
                .Skip(Convert.ToInt32(limit_begin))
                .Take(Convert.ToInt32(limit_end))
                .ToList();
        }

我在“Orderby”行收到错误,VS2008 用红色突出显示它,表示无法从用法推断参数类型。


The .OrderBy and .OrderByDescending方法需要类型参数Func<T, TKey>并且你正在传递一个字符串。基本上,它要求您提供一个表达式,它可以用来识别您想要排序的属性。由于您必须从字符串开始,因此我最好的想法是在 OrderBy 中使用反射。

.OrderBy(x => x.GetType().GetProperty(order_by).GetValue(x, null).ToString())

正如您所看到的,这不是很容易阅读,但应该可以解决问题。您还可以查看 LINQ 动态查询库:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx.

希望这可以帮助! :)

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

在实体框架中创建动态 linq 排序和搜索顺序语句时 的相关文章

  • 从服务器下载图像(cUrl,但接受建议)C++

    我试图通过从服务器 网站 下载图像来设置旋转背景图像 并尝试使用curl 来执行此操作 但是在执行此操作方面取得了0 成功 我的代码的 缩短的 版本如下 我没有收到错误 但是 如何 临时 保存该图像以将其显示为背景 是否有图像 类型变量 或
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 如何获取枚举数作为常量?

    From 枚举中定义的项目总数 https stackoverflow com questions 856154 total number of items defined in an enum 我发现我可以使用以下方法获取枚举数 Enum
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • R 包与 Rcpp 的链接错误:“未定义符号:LAPACKE_dgels”

    我正在创建一个 R 包 lapacker 以使用 R API 头文件 R ext Lapack h 为 R 提供和使用的内部 LAPACK 库 仅具有双精度和双复数 提供 C 接口 源代码 https github com ypan1988
  • C++:避免​​在重载中将字符串自动转换为布尔值

    我想创建一组方法 这些方法将根据其类型输出具有特殊格式的值 当我这样做时 到目前为止看起来还不错 static void printValue std ostringstream out int value out lt lt value
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • 如何通过分解 y 轴来减小 mschart 的高度

    如何降低 mschart 的高度 如下所示 编辑 就我而言 我不想查看中断图表 this chart1 ChartAreas 0 AxisY ScaleBreakStyle Enabled false 您似乎正在寻找AxisY ScaleB
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 结构大小与 typedef 版本不同?

    我的代码中有以下结构声明和 typedef struct blockHeaderStruct bool allocated unsigned int length typedef struct blockHeaderStruct block
  • Microsoft Visual Studio 2017 中的 wxWidgets 设置

    我花了大约 20 个小时试图弄清楚如何在 Microsoft Visual Studio 2017 中设置 wxWidgets 我遵循 https wiki wxwidgets org Microsoft Visual C 2B 2B Gu
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 对 Action 方法的两个并行 ajax 请求排队,为什么?

    我正在使用 ASP NET MVC 开发一个视频网站 我希望在我的应用程序中拥有的一项功能是转码视频 但由于转码过程可能非常耗时 我想向客户端用户展示该过程的进度 因此 我的架构是使用一个控制器操作来处理整个转码过程 并将其进度写入存储在服
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗

随机推荐

  • 包装模板函数和<未解析的重载函数类型

    我的包装功能有问题 template
  • 给定两个数组,找到给出两个数组之间最接近距离的排列

    假设我有两个长度相同的数组n named A and B 这两个数组包含实数值 我们将两个数组之间的距离定义为均方距离 dist A B sqrt sum A B 2 我想找到的排列A这给出了最小距离B 最简单的方法是尝试每一个排列A并记录
  • Python3 tkinter设置图像大小

    我到处寻找一种设置图像大小的方法 图像被设置为 url 我在网站上发现了其他问题 但没有一个有效 import urllib request base64 u urllib request urlopen currentWeatherIco
  • 如何修改另一个函数收到的 XMLHttpRequest 响应文本?

    我正在尝试修改我无法修改的函数收到的responseText 该函数创建了一个我可以附加到的 XMLHttpRequest 但我无法以允许我在原始函数接收之前修改内容的方式 包装 responseText 这是完整的原始函数 functio
  • 为什么在 C 中将枚举元素分配给相同的枚举变量类型时必须对其进行强制转换?

    我有以下内容 typedef enum FLS PROG SUCCESS FLS PROG FAIL FLS ERASE SUCCESS2U FLS ERASE FAIL FLS READ SUCCESS FLS READ FAIL FLS
  • 使用 vbscript 自动实现页面滚动

    我需要使用 vbscript 拍摄页面的完整快照 为此我需要向下滚动一点 实际上 我可以在快照中拍摄页面的一半 但我还需要在下一个快照中拍摄剩余部分 页面加载后我尝试使用以下内容 ie document body doScroll page
  • MySQL 中的更改数据捕获

    在我的数据库中 我想在每次更改列的值时跟踪它 以某种方式 每次字段值更改时我们都可以知道以前的值是什么 为每次更改分配时间戳会很棒 我我使用 MySQL 作为数据库服务器 我建议你看一下Debezium http debezium io 一
  • 如何将 Visual Studio 2017.3 降级到 2017.2?

    将 VS 更新到 2017 3 破坏了我的 xunit 测试发现 2017 2 一切正常 所以我正在寻找降级的方法 无法直接降级 但可以安装特定版本 使用 Visual Studio 安装程序卸载 Visual Studio 2017 从以
  • 我的组织用户对 Azure Devops 存储库的访问受到限制

    我们最近将代码移到了 azure devops 上 我们在 azure AD 中创建了用户帐户 并将相同的用户添加到 Azure Devops 中 以便他们可以访问代码 现在我们希望限制对存储库的访问 我检查了这个网址 Azure DevO
  • Firebase 云消息传递是否符合 HIPAA?

    我想在医疗保健应用程序中使用 Firebase Cloud Messaging 我想知道 FCM 是否符合 HIPAA 标准并且是否提供 BAA 我们刚刚与第三方完成了使用端到端加密的 Firestore Chat 示例应用程序 iOS 和
  • Win32 No-MFC 中的消息映射

    我如何创建类似的结构来处理 Win32 消息 就像在 MFC 中一样 In MFC BEGIN MESSAGE MAP CSkinCtrlTestDlg CDialog AFX MSG MAP CSkinCtrlTestDlg ON BN
  • 有 Ruby 语法的权威参考文档吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找有关 Ruby 语法的权威文档 我知道核心 API 和标准库的权威文档 但是语法本身呢 例如
  • 如何从左侧而不是顶部滑动导航栏?

    Bootstrap 支持从顶部切换导航栏 屏幕较小时如何从左侧滑动 例如 在上面提供的屏幕截图中 当调整屏幕大小时 导航栏会切换并从顶部向下滑动 我宁愿希望导航栏从左侧滑动 在Bootstrap中如何实现这个功能呢 目前 根据代码 导航栏从
  • Keycloak 模板可用变量

    我在谷歌上搜索了一段时间 以便找到我可以在各种 Keycloak 模板中使用的所有可用的 变量 的文档 我所说的变量是指所有的 xxx yyy 我可以用它来在模板中注入一些动态值 通过文档我可以在这里和那里找到其中的一些 例如 user a
  • cypress - 访问主站点时出现 403 禁止错误

    我正在尝试 cy visit 我的单页应用程序 该应用程序需要在浏览器中加载我的证书才能正确运行 运行测试时 它失败并出现 403 禁止错误 有一个可怕的解决方法 我在 cypress chrome 浏览器窗口中打开一个新选项卡 然后直接转
  • C++ 中指针“this+1”指的是什么?

    我正在浏览代码G2P 推理 https www i6 informatik rwth aachen de web Software g2p html并发现了一行非常奇怪的代码 public const Node childrenEnd co
  • 按服务数据 UUID 进行 BLE 扫描过滤器

    我们有使用 服务数据 128 位 UUID AD 类型信标数据的设备 0x21 对于 Android 扫描 我们通过 MAC 地址过滤 BLE 设备 效果很好 因为我们需要更大的灵活性 所以我们想通过 UUID 进行过滤 我的代码仅适用于小
  • 处理数学函数中的错误

    数学相关函数中错误处理的良好做法是什么 我正在构建一个专门函数的库 模块 我的主要目的是使调用这些函数的代码更容易调试 而不是创建一个闪亮的用户友好的错误处理工具 下面是 VBA 中的一个简单示例 但我也有兴趣听到其他语言的信息 我不太确定
  • 创建帖子时创建 Woocommerce 产品

    我在我的 WordPress 网站上使用 Woocommerce 我在我的网站上销售各种物品 我想要的是 每次我创建有关特定商品的小帖子时 它还会创建一个 Woocommerce 产品页面 其中包含可供出售的商品 例如 我创建了一篇关于定制
  • 在实体框架中创建动态 linq 排序和搜索顺序语句时

    我正在尝试构建一个函数来根据某些参数动态生成不同的查询 我对 LINQ 语法有点困惑 不确定我是否做对了 字符串类型参数集是 search 用于搜索文本框值 searchfield 搜索内容 limit begin limit end 用于