2016-08-03 72 views
0

使用的UnitOfWork库模式,我可以使用访问的参考:库模式上的多重选择器

var tmp = unitOfWork.Repository<User>().Queryable(); 

我想查询表,并恢复了帐户,ACCOUNTID是一个长:

result = a.Any(e => e.AccountId == AccountId); 

这为我提供了帐户记录的帐户记录。

我也有一个表格叫做电子邮件链接到帐户表。所以我现在要更新上面下面的查询:

result = a.Any(e => 
    e.AccountId == AccountId && 
    e.Email.EmailID == EmailID 
); 

EMAILID是一个漫长的。现在应该为特定的用户帐户提供特定的电子邮件。

我得到的是:

Operator '&&' cannot be applied to operands of type 'bool' and 'User' 
+0

你可以重新解释一下这个问题吗?我不明白1)什么“看看有没有记录存在Table1和Table2哪里符合标准”的意思; 2)第一个表达式中的“a”与第一个表达式中的“tmp”有什么关系? 'a'是'IQueryable '? 3)'Table2'似乎是'Table1'里面的一个集合? – Groo

+0

我们可以看到你的实体吗(这不是委婉说法)? –

+0

我不认为你需要。 Table用户具有主键AccountId作为long,Table Email具有指向该字段的链接,称为AccountId并且具有称为EmailID的主键,该主键也是长的。所以Iqueryable接口正在比较这些字段。 – gilesrpa

回答

0

我发现,如果我用它为我的作品则按照以下规定你的病情。

Result = searchQuery.Any(e => 
        e.AccountId == AccountId && 
        e.Email.Any(f => f.Id == EmailId); 
0

目前尚不清楚你想要什么,但

var tmp = unitOfWork.Repository<User>().Queryable(); 

应该给你IQueryable<User>上,你可以申请Where条件,但你会得到结果的User集合或对象。

unitOfWork.Repository<User>().Queryable().Where(e => 
    e.AccountId == AccountId && 
    e.Email.EmailID == EmailID 
); 

如果你想Email您应该加载EmailUser对象之上或 unitOfWork.Repository<Email>().Queryable();