流利的nhibernate外连接2查询

时间:2017-05-19 10:46:30

标签: c# linq nhibernate fluent linq-to-nhibernate

我正在使用和流利的(c#),我想做以下事情:

我有两个IQueryable接口,relationsdocumentsrelations

relations对象包含企业列表,documentsrelations对象包含第二个企业列表。

我想生成一个新的企业列表,其中包含企业列表(relations)减去第二个企业列表(documentsrelations)。

在sql中我会尝试使用外连接,但我不知道如何处理它。

****声明****

IQueryable<EnterpriseRelation> documentsrelations = 
    shared_doc.SharedIn.AsQueryable();

var relations = EnterpriseRelationService
    .QueryRelationsForEnterprise(LoggedUser.ActiveAsEnterprise)
    .Where(x => x.ContactingEnterprise.NIF == LoggedUser.ActiveAsEnterprise.NIF);

relations也是IQueryable<EnterpriseRelation>

我试过倍增的东西,但它总是告诉我它不受支持。

一些帮助?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您的实体主键是Id,您是否尝试过类似下面的内容?

var relations = EnterpriseRelationService
    .QueryRelationsForEnterprise(LoggedUser.ActiveAsEnterprise)
    .Where(x => x.ContactingEnterprise.NIF == LoggedUser.ActiveAsEnterprise.NIF)
    .Where(x => !documentsrelations.Select(dr => dr.Id).Contains(x.Id));

注意:

在问题中使用.AsQueryable()大部分时间都是错误的。如果SharedIn实际上不是可查询实例,它只会将其转换为linq-to-object可查询,在内存中执行,而不是在数据库中执行。对于你的情况,无论如何都没有必要将它作为可查询,至少我的答案是这样,除非它已经是一个可查询的等待在db中执行。

如果我的回答失败,请在AsQueryable没有SharedIn电话的情况下再试一次。