如何使用LINQ表达式树加入另一个表?

时间:2010-11-10 13:14:13

标签: linq expression

我目前正在使用nHibernate的存储库模式。当从一个实体(一个表)中进行选择时,我能够毫无问题地使用表达式树,但我想与另一个表进行内连接以获得相关的行。这是我到目前为止所得到的:

public abstract class QueryBase<T>
{
    public abstract Expression<Func<T, bool>> MatchingCriteria { get; }

    public T SatisfyingElementFrom(IQueryable<T> candidates)
    {
        return SatisfyingElementsFrom(candidates).SingleOrDefault();
    }

    public IQueryable<T> SatisfyingElementsFrom(IQueryable<T> candidates)
    {
        return candidates.Where(MatchingCriteria).AsQueryable();
    }
}

public class UserByEmailAddress : QueryBase<User>
{
    private string _emailAddress;

    public UserByEmailAddress(string emailAddress)
    {
        _emailAddress = emailAddress;
    }

    public override Expression<Func<User, bool>> MatchingCriteria
    {
        get { return user => user.EmailAddress == _emailAddress; }
    }
}

我希望能够基于OrderId返回用户。这样的事情:

return user =&gt; user.Id == Order.UserId

在LINQ中很容易完成,但我在弄清楚表达式树时遇到了问题,我们非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)