C# 如何将这样的多个条件转换为lambda

C# 如何将这样的多个条件转换为lambda,c#,entity-framework,lambda,C#,Entity Framework,Lambda,我打算用这个查询做一个lamba表达式,但我被卡住了。我以前必须做一些简单的lambdas,现在我需要在这一个中做一个多条件混合或and,我对这个是新手 所以,让我来解释一下这种结构,你们就会明白为什么它很棘手(至少对于兰博达的新手来说是如此)。我有请求,其中请求有许多属性,属性有名称和值,因为根据请求状态,它们在本例中有不同的属性RequestState。APPROVAL\u PENDING是一个常量,它将带来正确的状态,属性名称也与我需要的属性名称的常量进行比较,需要查找的值是属性值中的ww

我打算用这个查询做一个lamba表达式,但我被卡住了。我以前必须做一些简单的lambdas,现在我需要在这一个中做一个多条件混合或and,我对这个是新手

所以,让我来解释一下这种结构,你们就会明白为什么它很棘手(至少对于兰博达的新手来说是如此)。我有请求,其中请求有许多属性,属性有名称和值,因为根据请求状态,它们在本例中有不同的属性
RequestState。APPROVAL\u PENDING
是一个常量,它将带来正确的状态,属性名称也与我需要的属性名称的常量进行比较,需要查找的值是属性值中的wwid

然后我将进行一个查询;得到所有的请求,但我需要知道如何处理这个

var query = from request in DBContext.REQUESTs
                        join attr in DBContext.REQUEST_ATTRIBUTES on request.REQUEST_ID equals attr.REQUEST_ID
                        where (attr.ATTRIBUTE_VALUE == wwid && 
                        (attr.ATTRIBUTE_NAME == RequestAttributes.APPROVER_2_WWID || attr.ATTRIBUTE_NAME == RequestAttributes.APPROVER_WWID))
                        && request.STATE_ID == RequestState.APPROVAL_PENDING
                        select request;

这是另一种方法

创建从请求到请求属性的导航属性:

 public class Request
{
    .... Properties...
    public virtual ICollection<RequestAttribute> RequestAttributes { get; set; }
}
public class RequestAttribute
{
    .... Properties...
    public virtual Request> Request { get; set; }
}

你看到了吗?“你所拥有的更具可读性。”丹尼尔·维加。我的回答对你有用吗?@Boney,不,我当时改变了我的方法
 public class Request
{
    .... Properties...
    public virtual ICollection<RequestAttribute> RequestAttributes { get; set; }
}
public class RequestAttribute
{
    .... Properties...
    public virtual Request> Request { get; set; }
}
var query = DBContext.REQUESTs.Where(r=> r.REQUEST_ATTRIBUTES.Any(attr=>attr.ATTRIBUTE_VALUE == wwid && 
                    (attr.ATTRIBUTE_NAME == RequestAttributes.APPROVER_2_WWID || attr.ATTRIBUTE_NAME == RequestAttributes.APPROVER_WWID))
                    && r.STATE_ID == RequestState.APPROVAL_PENDING)
                    .Select(r=> r);