如何将 OrderBy 表达式数组传递给方法?

2023-11-27

我正在尝试增强我的存储库,以便它负责订购。我已经应用了来自的答案这个问题就存储库而言,我很确定它已经完成了。

我遇到的问题是我不确定现在如何将数组传递给存储库中的方法。编译器一直对我大喊关于委托的事。在上面的链接问题中,作者本质上是在做我想做的事情,所以它一定是可能的。

这是我的存储库代码:

public virtual IList<TEntity> SelectOrderedList(
    Expression<Func<TEntity, bool>>[] Orderers,
    bool Ascending = true) {
    IOrderedQueryable<TEntity> TemporaryQueryable = null;

    foreach (Expression<Func<TEntity, bool>> Orderer in Orderers) {
        if (TemporaryQueryable == null) {
            TemporaryQueryable = (Ascending ? this.ObjectSet.OrderBy(Orderer) : this.ObjectSet.OrderByDescending(Orderer));
        } else {
            TemporaryQueryable = (Ascending ? TemporaryQueryable.ThenBy(Orderer) : TemporaryQueryable.ThenByDescending(Orderer));
        };
    };

    return TemporaryQueryable.ToList();
}

顺便说一句,我不是 100% 确定我应该使用Expression<Func<TEntity, bool>>。出于某种原因,我有一种感觉,它应该是Expression<Func<TEntity, int>>,但我不太确定。

不管怎样,如果有人能告诉我如何实际调用它,我将非常感激。如果你能让它像一个params争论。


public virtual IList<TEntity> SelectOrderedList(
    params Expression<Func<TEntity, IComparable>>[] Orderers) {
    IOrderedQueryable<TEntity> TemporaryQueryable = null;

    foreach (Expression<Func<TEntity, IComparable>> Orderer in Orderers) {
        if (TemporaryQueryable == null) {
            TemporaryQueryable = this.ObjectSet.OrderBy(Orderer);
        } else {
            TemporaryQueryable = TemporaryQueryable.ThenBy(Orderer);
        };
    };

    return TemporaryQueryable.ToList();
}

然后将其用作SelectOrderedList(o1 => (o1.Something), o2 => (o2.SomethingElse))...

另外,再写一个降序:)

如果您想要一个,其中每个排序者可以升序或降序,请将签名替换为 Tuple>,SortDirection> 但您不能将隐式类型的 lambda 与隐式类型的元组一起使用(并且您也不能将它们与隐式表达式一起使用),那么,您'使用它时会有一个相当丑陋的代码......

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

如何将 OrderBy 表达式数组传递给方法? 的相关文章

随机推荐

  • 使用UPDLOCK和READPAST选择top 1对整个表设置排他锁

    我在存储过程中使用 UPDLOCK 和 READPAST sql 提示来实现一种表队列 我说排序是因为我选择前 1500 个而不是前 1 个 并且我不会删除之后的行选择它们 有关更多详细信息 请参阅问题在 选择前 n 查询中返回未锁定的行
  • 从字符串中删除反斜杠

    我正在从 txt 文件读取文本并将内容传递给 SQL SQL 文本包含双引号并导致问题 我想删除下面字符串中的 以便我可以将其发送到 SQL test lt select case when est dsaf test lt cat tes
  • 拖动子元素时会触发父元素的“dragleave”

    Overview 我有以下 HTML 结构 并附上了dragenter and dragleave事件到 div 元素 div div div div class text this is some text div div class t
  • 从多线程使用 QSqlQuery

    我有很多 C 11 线程正在运行 它们有时都需要数据库访问 主要是我初始化数据库连接并打开数据库 Qt 文档说查询不是线程安全的 因此我使用全局互斥体 直到线程内存在 QSqlQuery 这可行 但是否保证有效 或者我有时会遇到问题 看看文
  • 如何在 Dart 代码中从 REST api 解码 utf-8?

    我正在尝试使用 REST API 从 Wordpress 站点创建新闻报道应用程序 但它是用 UTF 8 编码的 我是 Dart 新手 我所知道的是我可以通过字符数组而不是给出字符串 作为输入 来解码 Utf 8 那么如何为我的应用程序解码
  • 使用 javascript/jQuery 获取父 div 内的鼠标位置[重复]

    这个问题在这里已经有答案了 可能的重复 jQuery 获取元素内的鼠标位置 我有一个页面 在该页面内有一个 div 如果用户在该 div 内单击 它将存储他们在该 div 内单击的位置的 X Y 坐标 例如 如果我单击 div 的左上角 无
  • 未捕获错误:NOT_FOUND_ERR:appendChild 调用的 DOM 异常 8 [重复]

    这个问题在这里已经有答案了 可能的重复 javascript addChild 不起作用 错误发生在该片段的最后一行 var anchor a href imagename a var specialdiv document getElem
  • Elasticsearch 在 java api 中的内部命中

    我正在尝试使用 Java API 通过 elasticsearch 实现内部命中 但我找不到太多关于它的文档或其他人正在使用的示例 我的 JSON 搜索工作原理如下 query filtered query match all filter
  • 从数据库读取 BLOB(PDF 内容)并编辑和输出 PDF 编辑文件,无需创建物理文件

    我正在使用 Oracle 数据库并将 PDF 内容存储在 BLOB 字段中 我想读取BLOB内容 然后编辑并输出编辑后的内容 我需要做的编辑是 在 BLOB 内容上方添加标题 在每个页面上添加水印 在每个页面上添加页脚 然后我需要输出文件
  • HttpWebRequests 后续调用失败

    我知道这是一个模糊的问题 特别是因为我没有提供任何代码 但我正在开发一个 Net 2 0 应用程序 并且我们有一个 WebRequest 将数据发布到内部构建的 API 奇怪的事情发生在我们的第三个 并且总是第三个 后续请求上 该请求在请求
  • 伴生对象无法访问类上的私有变量

    来自 Scala REPL 的相当奇怪的行为 尽管以下编译没有问题 class CompanionObjectTest private val x 3 object CompanionObjectTest def testMethod y
  • 找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

    签署第三方程序集并将其添加到 GAC 后 我收到以下错误 程序集绑定程序日志条目也显示这个错误 它说不匹配的程序集不确定如何错误 因为我删除了所有 obj 和 bin 折叠并批量构建了应用程序 重新导入了 dll Assembly mana
  • Socket.IO 客户端 .js 文件位于哪里?

    我正在尝试让 socket io 节点库 工作 我的服务器端 js 正在工作 并且它正在监听 socket io 网站简单说明 这很好 但是 我要导入什么 JS 文件 我进入了node modules目录 在那里我通过npm安装了soc
  • 有没有办法在node.js的对象文字中指定ES6生成器方法?

    我似乎无法创建一个生成器方法作为对象文字 这是我的工作源代码 function getRecords data for var i 0 i lt data length i yield data i var records getRecor
  • 在 Python 中将重复项保留在列表中

    我知道这可能是一个简单的答案 但我无法弄清楚 Python 中将重复项保留在列表中的最佳方法是什么 x 1 2 2 2 3 4 5 6 6 7 输出应该是 2 6 我找到了这个链接 在 python 中查找 并保留 子列表的重复项 但我对
  • Scala 类无法覆盖扩展 java.util.comparator 的 Java 接口中的比较方法

    我目前正在开发一个 jEdit 插件的端口 以在 Scala 中编写所有代码 然而 我在某个时候被迫实现我自己的比较器 我的简化代码如下 class compare extends MiscUtilities Compare def com
  • StringBuilder 与 XmlTextWriter

    我试图从提供 Xml 内容的自定义 HttpHandler 中获得尽可能多的性能 我想知道哪个性能更好 使用 XmlTextWriter 类或临时 StringBuilder 操作 例如 StringBuilder sb new Strin
  • 具有自定义项目的 UIMenuController 不适用于 UICollectionview

    当长按 UICollectionViewCell 时 我添加了自定义菜单控制器 self becomeFirstResponder UIMenuItem menuItem UIMenuItem alloc initWithTitle Cus
  • 根据类为 DOM 元素添加事件监听器

    我有一张桌子 其中每个tr and td只有课程 我在选择课程时遇到问题td具有我需要的类的元素 HTML table tr class data td class cell 1 td td class cell2 td tr tr cla
  • 如何将 OrderBy 表达式数组传递给方法?

    我正在尝试增强我的存储库 以便它负责订购 我已经应用了来自的答案这个问题就存储库而言 我很确定它已经完成了 我遇到的问题是我不确定现在如何将数组传递给存储库中的方法 编译器一直对我大喊关于委托的事 在上面的链接问题中 作者本质上是在做我想做