LINQ 有条件添加联接

2024-01-11

我有一个 LINQ 查询,我试图从 2 个表返回数据,但我加入的表是有条件的。

这就是我想做的:

if (teamType == "A"){
    var query = from foo in context.People
                join foo2 in context.PeopleExtendedInfoA
                select foo;
}
else {
    var query = from foo in context.People
                join foo2 in context.PeopleExtendedInfoB
                select foo;
}

然后我会进一步过滤查询。我显然无法以这种方式设置它,因为我无法访问 if 块之外的“查询”,但它显示了我正在尝试执行的操作。这是我稍后尝试对查询执行的操作的示例:

if (state != null)
{
     query = query.Where(p => p.State == state);
}

if (query != null) {
   var queryFinal = from foo in query
         select new PeopleGrid()
         {
              Name = foo.Name,
              Address = foo.Address,
              Hobby = foo2.Hobby
         }
}

我试图返回的是表 foo 中的所有数据,然后是连接表中的一个字段,但根据逻辑,连接表会有所不同。 PeopleExtendedInfoA 和 PeopleExtendedInfoB 都有列“Hobby”,但我无法从连接表访问“Hobby”,这是我需要从连接表中访问的唯一字段。

我该怎么做呢?


Does PeopleExtendedInfoA and PeopleExtendedInfoB继承自同一个基类?你可以创建一个IQueryable<BaseClass>并在您添加联接时让 linq 提供程序为您解决该问题。对于样品:

IQueryable<BasePeople> basePeople;
if (teamType == "A")
   basePeople = context.PeopleExtendedInfoA;
else
   basePeople = context.PeopleExtendedInfoB;

var query = from foo in context.People
            join foo2 in basePeople on foo.Id equals foo2.PeopleId
            select new PeopleGrid()
            {
              Name = foo.Name,
              Address = foo.Address,
              Hobby = foo2.Hobby
            };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ 有条件添加联接 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 使用 data.table 左连接

    假设我有两个数据表 s dataA A B 1 1 12 2 2 13 3 3 14 4 4 15 dataB A B 1 2 13 2 3 14 我有以下代码 merge test merge dataA dataB by A all d
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 如何使用 TSQL 将属性添加到现有根 XML 节点?

    我已经用 SQL 构建了一些 XML declare requestXML xml set requestXML select dataXML for xml raw rtEvent 我现在的一般输出遵循与此类似的模式
  • 休息; VS 继续;与返回;

    我从以下网站下载了一份用 php 编写的免费新闻通讯Hotscripts com http hotscripts com 我更新了一些代码以添加新功能 但我看到了一些我不明白的东西 在代码中我看到 foreach if break else
  • Ionic 2 不生成 scss 源映射。 “main.css.map”包含“null”

    你能帮我理解为什么 Ionic 2 不生成 scss 源映射吗 在 ionicserve 之后 我导航到 www build 文件夹 有 main css map 但它包含 null 而不是生成的源映射 如何修复它 有人遇到过这个问题吗 您
  • 如何在react-router v6中使用element传递props?

    我正在尝试将 MainSection 组件重用于两个不同的目的 单个故事和所有故事 为了实现此目的 我想在转到该组件的渲染的路由中传递一个属性 home Home 是 true 或 false 我想根据该布尔值渲染 MainSection
  • 用户:使用selenium传递代理

    在程序中使用用户验证代理的最佳 最简单方法是什么 我目前有这个 但我需要在浏览器打开时填写用户名和密码 from selenium import webdriver PROXY 123 123 123 243 80 chrome optio
  • Android Webview 和 Facebook 登录不工作

    我遇到了问题WebView我正在开发的应用程序 我们有一个通过 android 显示的响应式网站WebView 该网站有一个使用 Facebook 登录选项 这在移动浏览器和网站本身上运行良好 每当我尝试使用WebView应用程序登录使用F
  • 为什么循环中的任务工厂打印超出循环索引?

    我正在学习在 C 中使用任务并行库 TPL 并编写了以下代码 您可以复制粘贴并运行它 using System using System Collections Generic using System Linq using System
  • 使用 PHP S3 类时出现 RequestTimeTooSkewed 错误

    这是我的第一个PHP项目 所以我真的一点也不了解PHP 我想做的是使用 PHP S3 类将文件上传到 S3 存储桶 一个示例代码片段昨天可以工作 但是当我今天再次开始使用它时 几乎完全相同的代码停止工作 现在我只收到 putObject 函
  • 如何测试 Braintree 交易退款?

    我正在尝试对 Braintree 交易退款进行测试 但遇到了问题 Braintree 的 API 仅允许您为已结算的交易发放退款 然而 在沙箱环境中创建的交易仅每 24 小时 结算 一次 因此 当我尝试在测试套件中退款时 退款总是被拒绝 因
  • NSPopupButton 中带有绑定的分隔符项

    的内容NSPopupButton绑定到一个NSArray字符串 我们如何通过绑定插入分隔符项目 The 字符串 就像在过去 经典时代一样 不起作用 即字面上显示为 菜单项 是否有任何带有标准 Cocoa 类和绑定的开箱即用的解决方案 这应该
  • CATextLayer旋转?

    这应该确实有效 但不是 CATextLayer textLayer CATextLayer layer textLayer string text textLayer setValue NSNumber numberWithDouble M
  • 如何在 Pygame 中插入滑块?

    我目前正在 Python 上进行物理模拟 使用 Pygame 模拟室内的气体云 我的问题是我无法在代码中插入工作滑块来更改参数的值 我有一个运行模拟的 运行时 循环 当我想在其中插入工作滑块时 模拟就会停止 我无法让模拟和滑块同时工作 下面
  • 为什么正则语言的补语仍然是正则语言?

    根据我的教科书 只要L1是正则语言 L1 A L1的补集就是正则语言 A 不是还包括上下文无关语言 上下文相关语言和递归可枚举语言吗 A L1 也将包括所有这些 不是吗 那怎么可能有规律呢 在有限状态机的表示下 我理解为什么补码仍然是常规语
  • 向静态 Azure 网站添加身份验证

    我们有一个 Azure 网站 托管一个静态站点 仅一些 HTML CSS Javascript 然后通过 AJAX 调用与我们的 Azure 移动服务进行通信 我们想向该站点添加一些非常简单的身份验证 只需静态用户名 密码就足够了 请推荐最
  • 如何在 scipy.optimize 中使用 fmin_cg 获得正确的尺寸

    我一直在尝试使用 fmin cg 来最小化逻辑回归的成本函数 xopt fmin cg costFn fprime grad x0 initial theta args X y m maxiter 400 disp True full ou
  • Java foreach 对原语的迭代顺序是否精确定义?

    示例代码 int a new int 0 1 2 3 int result 0 for int i a result i 循环是否保证迭代a 0 a 1 a 2 a 3 以该顺序 我坚信答案是肯定的 但是这一页 http java sun
  • JLabel 仅显示 initComponents() 是否被删除

    MainFrame java JFrame public MainFrame initComponents Letters pl new Letters this this setContentPane pl this setTitle P
  • 无法使用反应钩子读取未定义的属性“映射”

    我试图使用 fortnite api 来显示当前的物品商店 但我收到了如标题所示的错误 当我控制台日志结果时 它显示一个数组 但我无法映射它 为什么 import React useState useEffect from react im
  • 在互操作 C# 期间延迟 Excel 计算

    我必须从 C 程序将数百个单元格输入到 Excel 工作表中 每次我设置一个单元格或一个范围时 Excel都会缓慢响应 大概是在我添加的每个输入之间更新各种输出 有没有办法禁用我的 C 程序的计算 并在完成设置单元格并准备好读取输出后重新启
  • LINQ 有条件添加联接

    我有一个 LINQ 查询 我试图从 2 个表返回数据 但我加入的表是有条件的 这就是我想做的 if teamType A var query from foo in context People join foo2 in context P