无法让外部连接在 EF 中工作

     2023-02-24     10

关键词:

【中文标题】无法让外部连接在 EF 中工作【英文标题】:Can't get outer join to work in EF 【发布时间】:2012-07-29 23:45:39 【问题描述】:

没关系,我用 join/into 语法解决了这个问题。也许这毕竟是必要的

我正在尝试让 Linq 外连接来对抗 EntitiyFramework。

public List<OSCDagbokDTO> FillDataForOSCDagbokSO(List<OSCDagbokDTO> oscdagboklista)

    var kalla_idn = oscdagboklista.Select(k => k.Kalla_id.GetGuidOrNull()).Distinct().ToList();
    var kallaLista = (from k in _gemensamEntityContext.Kalla
                      where kalla_idn.Contains(k.Kalla_id)
                      select new KallaDTO()
                      
                          Kalla_id = k.Kalla_id,
                          KallaText = k.KallaText
                      ).ToList();

    var nyOSCDagbokLista = (from o in oscdagboklista
                            from k in kallaLista.DefaultIfEmpty()
                            where o.Kalla_id.GetGuidOrNull() == k.Kalla_id
                            select new OSCDagbokDTO()
                            
                                Id = o.id,
                                Datum = o.Datum,
                                Enhet_id = o.Enhet_id,
                                Handelse = o.Handelse,
                                Kalla = k,
                                Kalla_id = o.Kalla_id,
                            ).ToList();
    return nyOSCDagbokLista;

第一个语句是从传入列表中的属性获取 id 列表。

第二个,从该列表创建 DTO 对象。

第三个,使用(如我所想的)外连接从传入列表中获取所有项目,与 DTO 列表(kallaLista)连接。我正在使用 DefaultIfEmpty(),我认为它不会从传入列表中过滤掉项目,但确实如此!

我没有使用“join”语法,因为我从各个网站都了解过,上面的语法应该没问题,我更喜欢它,即使它更老式。

我错过了什么,为什么当使用 DefaultIfEmpty() 时,传入列表中的项目不在 DTO 列表中时会被过滤掉?

【问题讨论】:

【参考方案1】:

如果存在从父实体到子集合的导航属性,我是否可以补充一点,执行外部连接的方法非常简洁?

假设您有一个实体OSCDagbok(我只是猜测单数形式),其导航属性为kallaLista。然后你可以这样做:

from o in oscdagboklista
from k in o.kallaLista.DefaultIfEmpty() // mind the "o."
select new OSCDagbokDTO()
...

如果没有,您可以按照您的解决方案进行操作。 intojoin 转换为 GroupJoin,这相当于外连接的 linq。

【讨论】:

我认为那是我错过的事情,而不是使用“o”。而是另一个列表!

如何让 ScrollViewer 在 StackPanel 中工作?

...在以下WPFXAML中,ScrollViewer不起作用(它显示滚动条但您无法滚动,并且内容从窗口移到底部)。我可以将外部StackPanel更改为Grid,它会起作用。但是,在我复制以下代码的应用程序中,我 查看详情

如何让外部页面优惠券/优惠券表格在 OpenCart 中工作?

】如何让外部页面优惠券/优惠券表格在OpenCart中工作?【英文标题】:HowdoIgetanexternalpagecoupon/voucherformtoworkinOpenCart?【发布时间】:2012-08-3003:03:24【问题描述】:我的OpenCart环境中有另一个页面,比如说关于我们的页面,它有以下... 查看详情

无法让 DLookup 函数在 Access 2013 中工作

】无法让DLookup函数在Access2013中工作【英文标题】:CannotGetDLookupFunctiontoworkinAccess2013【发布时间】:2016-11-0607:59:23【问题描述】:我正在尝试让Dlookup功能在Access2013中工作,但我无法让它工作,这是我目前所拥有的:-我有一个名... 查看详情

无法让悬停导航在 IE8/9 中工作,在 FF/Chrome 中工作

】无法让悬停导航在IE8/9中工作,在FF/Chrome中工作【英文标题】:CannotgethovernavigationworkinginIE8/9,worksinFF/Chrome【发布时间】:2011-07-0213:22:07【问题描述】:我正在努力让我的摄影作品集网站在所有主要浏览器(IE8、FF、Chrome)上都... 查看详情

无法让二级路线在快递中工作

】无法让二级路线在快递中工作【英文标题】:Can\'tgetsecondlevelroutesworkinginexpress【发布时间】:2015-11-0616:50:31【问题描述】:很抱歉,我对node很陌生。我已经坚持了几个小时了。server.jsapp.use(express.static(__dirname+"/public"));app.get(\'/... 查看详情

无法让查询在 Angular 中工作

】无法让查询在Angular中工作【英文标题】:UnabletogetquerytoworkinAngular【发布时间】:2017-11-1818:14:45【问题描述】:我对Angular很陌生,我正在尝试制作一个使用REST服务并呈现结果的简单应用程序。当我尝试在Angular中使用查询命令... 查看详情

无法让 Firestore 快速入门在 Python 中工作

】无法让Firestore快速入门在Python中工作【英文标题】:CannotgetFirestoreQuickstarttoworkinPython【发布时间】:2019-04-0720:33:28【问题描述】:我在Python中关注了quickstartguide的Firestore,但由于收到以下错误消息,我无法让它运行:grpc._channe... 查看详情

无法让 css 模块在 Typescript Storybook 项目中工作

】无法让css模块在TypescriptStorybook项目中工作【英文标题】:Can\'tgetcssmodulestoworkwithinTypescriptStorybookproject【发布时间】:2021-01-0213:41:37【问题描述】:这是./storybook/main.js的当前配置,我似乎无法让任何css模块在我的故事书组件中... 查看详情

无法让闭包语法在 swift 4 中工作

】无法让闭包语法在swift4中工作【英文标题】:Cannotgetclosuresyntaxtoworkinswift4【发布时间】:2017-11-0817:02:09【问题描述】:我已经尝试了所有可能的语法变化,但完成处理程序总是在动画结束之前激活。我想我应该用别的东西代替... 查看详情

无法让 subl 命令在 OSX 终端中工作 [重复]

】无法让subl命令在OSX终端中工作[重复]【英文标题】:Can\'tgetsublcommandtoworkinOSXterminal[duplicate]【发布时间】:2016-06-2600:28:30【问题描述】:我正在尝试让sublcomand用于sublimetext3在终端命令行上工作,但在尝试了一些事情之后我无法... 查看详情

无法让 FFT 在 Octave 中工作

】无法让FFT在Octave中工作【英文标题】:Can\'tgetFFTtoworkinOctave【发布时间】:2012-10-2614:20:46【问题描述】:我一直在做一个(可能超级简单的)任务,其中一个步骤是获得傅里叶变换。我按照我大学的指导来转换波声whichcanbefoundh... 查看详情

无法让 doInBackground 在 AsyncTask 中工作

】无法让doInBackground在AsyncTask中工作【英文标题】:Can\'tgetdoInBackgroundtoworkinAsyncTask【发布时间】:2020-08-1502:15:23【问题描述】:我是AsyncTask的新手,所以如果我的问题很愚蠢,请提前道歉。长话短说,我有一个处理一些文件的方... 查看详情

无法让 curl 在 wamp 中工作

】无法让curl在wamp中工作【英文标题】:Can\'tgetcurlworkinginwamp【发布时间】:2012-10-1600:40:30【问题描述】:我是一个完整的PHP/wamp菜鸟,但我只是想让一些简单的代码工作。我正在使用一个库来帮助我使用OAuthforTwitter,并且一直在... 查看详情

无法让 $(this) 在 jQueryUI 自动完成中工作

】无法让$(this)在jQueryUI自动完成中工作【英文标题】:Can\'tget$(this)workinginjQueryUIautocomplete【发布时间】:2011-05-1623:43:40【问题描述】:我正在尝试使用jQueryUI创建一个通用的自动完成脚本。自动完成应该适用于每个:<inputtype=\'... 查看详情

无法让 double.TryParse 在 Linq 表达式树中工作

】无法让double.TryParse在Linq表达式树中工作【英文标题】:Unabletogetdouble.TryParsetoworkinLinqExpressionTree【发布时间】:2015-07-1021:49:48【问题描述】:我正在尝试使用Linq表达式为IQueryable数据源创建动态where子句。我无法让TryParse函数在... 查看详情

无法让 Ext.ux.form.SearchField 在 ExtJS 中工作

】无法让Ext.ux.form.SearchField在ExtJS中工作【英文标题】:Can\'tgetExt.ux.form.SearchFieldtoworkinExtJS【发布时间】:2014-06-1015:54:51【问题描述】:我似乎无法让SearchField在extJS中工作。我想在表格工具栏中实现它,并对我的表格存储对象执... 查看详情

无法让 @Secured 在 Spring MVC 中工作

】无法让@Secured在SpringMVC中工作【英文标题】:Can\'tget@SecuredworkinginSpringMVC【发布时间】:2013-01-0409:33:31【问题描述】:我正在使用SpringMVC来公开RESTful服务。我已经通过HTTPBasicAuthentication启用了身份验证,并且使用&lt;security:htt... 查看详情

无法让 RestKit 在 Xcode 4.6 中工作

】无法让RestKit在Xcode4.6中工作【英文标题】:CannotgetRestKittoworkinXcode4.6【发布时间】:2013-02-1300:42:23【问题描述】:我正在尝试让RestKit工作,但我不断收到错误,这是Xcode4.6,目标iOS是6.1我正在遵循本指南:https://github.com/RestKit/R... 查看详情