如何解决如何使用方法语法在 LINQ join 中添加多个条件
我需要在连接上添加多个条件。在下面的 LINQ 中,我需要添加类似这样的条件。并且需要在这些条件下使用来自不同实体的值。这需要使用此仅方法语法来完成。我能够在查询语法中做到这一点。但要求是在幕后它应该生成一个查询或尽可能少的查询。使用多个“from”或多个“join”的查询语法执行多个SELECT查询。
我的第二个问题是,在注释掉的行上,我需要过滤 r4.VersionNo==r3.VersionNo。失败了。
,ppp => ppp.r2.KeyColumn,t => t.KeyColumn && t.MyID==r1.MyID && t.Column2==r2.Column2,(ppp,t) => 新 { ppp,t })
尝试过(没有用):
- ,t => (t.KeyColumn,t.MyID,t.Column2),t) => new { ppp,t } )
代码:
var result = repo1.Join(repo2,r1 => r1.KeyColumn,r2 => r2.KeyColumn,(r1,r2) => new { r1,r2 })
.Join(repo3,t => t.KeyColumn,t })
.Join(repo4,pppt => pppt.ppp.r2.KeyColumn,r4 => r4.VersionNo,(pppt,r4) => new { pppt,r4 })
.Select(a => new MyObject
{
KeyColumn = a.ppp.r1.KeyColumn,AnotherKeyColumn = a.ppp.r2.AnotherKeyColumn,})?.ToList();
解决方法
现在可以使用了。它生成了两个查询,与之前的许多查询相比,这很好。
变化:
r4 => new
{
keycolumn1 = r4.keycolumn
versioncolumn = r4.VersionNo
},pppt => new
{
keycolumn1 = pppt.ppp.r2.KeyColumn
versioncolumn = r4.VersionNo
},
最终代码:
var result =
repo1.Join(repo2,r1 => r1.KeyColumn,r2 => r2.KeyColumn,(r1,r2) => new { r1,r2 })
.Join(repo3,ppp => ppp.r2.KeyColumn,t => t.KeyColumn,(ppp,t) => new { ppp,t })
.Join(repo4,pppt => new
{
keycolumn1 = pppt.ppp.r2.KeyColumn
versioncolumn = r4.VersionNo
},r4 => new
{
keycolumn1 = r4.keycolumn
versioncolumn = r4.VersionNo
},(pppt,r4) => new { pppt,r4 })
.Select(a => new MyObject
{
KeyColumn = a.ppp.r1.KeyColumn,AnotherKeyColumn = a.ppp.r2.AnotherKeyColumn
})?.ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。