Linq If 语句

2023-11-27

我如何在 linq toEntity 中写这样的东西

sb.Append(" WHERE question.question_isdeleted = 0");
    if (catid != 0)
        sb.AppendFormat(" AND (CatID IN ({0}))", catsSTR);
    if(!string.IsNullOrEmpty(AuthorID))
        sb.Append(" AND (question_ownerid = @id)");

我想我只需要在 linq toEntity 中编写 if 条件的语法


我会在这里使用点表示法:

var query = questions.Where(q => !q.IsDeleted);

if (catId != 0)
{
    query = query.Where(q => cats.Contains(q.CatID));
}
if (authorId != 0)
{
    query = query.Where(q => q.OwnerId == authorId);
}

您可以编写自己的扩展方法来更简单地执行此操作:

public static IQueryable<T> OptionalWhere<T>(
    this IQueryable<T> source,
    bool condition, 
    Expression<Func<T,bool>> predicate)
{
    return condition ? source.Where(predicate) : source;
}

然后你可以写:

var query = questions.Where(q => !q.IsDeleted);
                     .OptionalWhere(catId != 0, q => cats.Contains(q.CatID))
                     .OptionalWhere(authorId != 0, q => q.OwnerId == authorId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq If 语句 的相关文章

随机推荐

  • 如何获取iOS设备的唯一ID?

    我在服务器端使用mac地址来识别iOS设备 当使用 iOS 7 运行我的应用程序时 无法检索正确的 MAC 地址 或者我用过 NSUUID oNSUUID UIDevice currentDevice identifierForVendor
  • Flutter 用于 Web Cookie/令牌会话和身份验证

    我正在开发一个全栈应用程序 使用NodeJS 和 Flutter Web 版 目前我不明白如何制作安全 cookie 令牌会话 我需要的答案是如何使用 Flutter For Web 制作一个身份验证系统就像其他社交网络或 Stackove
  • Maven 编译错误。执行javac失败,但无法解析错误:javac: invalid flag: -s

    尝试执行 mvn clean install 时出现编译错误 ERROR COMPILATION ERROR INFO ERROR Failure executing javac but could not parse the error
  • 内部错误(javaClasses.cpp:129)

    我正在尝试在 Eclipse 上使用 JUnit 4 和 Robolectric 运行测试 但我一直收到此错误 Invalid layout of java lang String at value A fatal error has be
  • 如果矩阵中单个作业失败,则将 GitHub 操作工作流程标记为失败

    运行 GitHub Actions 矩阵工作流程时 我们如何允许作业失败 继续运行所有其他作业 并将工作流程本身标记为失败 在此图中 您可以看到即使作业失败后工作流程也会通过 在这种情况下 我们需要将工作流程标记为失败 这是我的工作流程 y
  • 多个 mongoose 预保存中间件

    我想对单个模式使用多个预保存猫鼬中间件 这可能吗 Example var schema new Schema schema pre save function next do stuff next schema pre save funct
  • 具有 2 个主键字段的 JPA 表

    我有一个只包含 2 个字段的表 该表有一个由这两个字段组成的复合PK 当使用 Netbeans 从数据库创建实体 bean 时 实体 bean 不会像其他具有 2 个以上字段的表那样自动创建 所以我想我需要自己创建实体bean 创建此实体
  • 直接调用全局安装的Node.js模块

    假设我想为 Node js 编写一个要全局安装的模块 我不想编写任何 C 或其他东西 而是编写普通的 Node js 代码 基本上 这很容易 只需编写模块 然后使用安装即可npm install g 现在 大多数全局安装的模块都提供了直接调
  • elm 生成随机数

    我想在 elm 中的两个值之间生成一个随机 int 像这样的东西 nb random 0 10 我已阅读该文档和多篇文章 最好的答案来自这个 stackoverflowpost gen Random int 0 10 seed0 Rando
  • iOs 中 HTML5 音频元素的持续时间值存在问题

    我正在为 iOs 设备开发一个网络应用程序 但 html5 音频标签有问题 我设计了一个自定义音频播放器 并使用 JavaScript 函数控制歌曲 在 safari 桌面版上 该应用程序运行良好 但在 safari 移动版上 它无法识别音
  • 如何更改JFreeChart饼图颜色?

    如何自定义 JFreeChart 图形的颜色 让我们看看我的java代码 private StreamedContent chartImage public void init JFreeChart jfreechart ChartFact
  • Swift,与方法名相同的变量

    我有一个 var formVC UIViewController 我还试图有一个名为 func formVC gt UIViewController 我知道它在 OBJC 中有效 但我没有看到在 Swift 中做到这一点的方法 有没有办法解
  • ActionBarActivity 和 Fragment Activity 的区别

    我是 Android 菜鸟 我刚开始使用ActionBarActivity over FragmentActivity 他们之间有什么区别吗 FragmentActivity是基于支持的片段的基类 所以你将使用Fragment来自 API
  • 在 vue 3 中导入 bootstrapVue

    您好 我尝试在我的 vue 3 应用程序中使用 bootstrapVue 和 typescript 这里是我的 main ts import createApp from vue import App from App vue import
  • R 与其他非 Java 语言的接口/将 R 编译为可执行文件

    我开发了一个与数据库一起使用的 R 脚本 进行一系列处理并输出图形和表格 我可以将该数据输出为逗号分隔值和图片 以便稍后将它们导入到我的软件中 这没有问题 问题是如何分发我的应用程序而无需在客户端上完整安装 R 我见过 RJava 之类的东
  • Xcode 针对不同目标使用不同资源

    我正在开发一个 iPhone 应用程序 该应用程序将有完整版和精简版 为了从相同的源代码和 Xcode 项目中获取这两个包 我向 Xcode 项目添加了另一个目标 现在 我想让 Lite 目标仅将资源文件的子集复制到捆绑包中 但是 Xcod
  • 如何提取图像中的白色区域

    我有一个像这样的示例图像 我正在寻找一种方法来消除图像中的噪声 这样我最终会得到一个在白色背景上只有黑色文本的图像 以便我可以将其发送到超立方体 我尝试过变形 kernel np ones 4 4 np uint8 opening cv2
  • C# 获取列表中的非重复项[重复]

    这个问题在这里已经有答案了 有了这样的列表 int numbers 1 2 2 3 3 4 4 5 我可以使用 Distinct 函数删除重复项 因此列表将显示 1 2 3 4 5 然而 我想要相反的 我希望它删除所有重复的数字 留下唯一的
  • 获取标题不完全已知的窗口的句柄。 (C#)

    标题是部分静态的 带有可变后缀 例如 窗口标题 user id 在不知道确切标题的情况下如何获取句柄 查看所有进程并检查主窗口标题 您可以使用正则表达式 或者StartsWith etc foreach Process proc in Pr
  • Linq If 语句

    我如何在 linq toEntity 中写这样的东西 sb Append WHERE question question isdeleted 0 if catid 0 sb AppendFormat AND CatID IN 0 catsS