Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在这个LINQ查询中使用let?_Linq_Entity Framework_Linq To Sql_C# 4.0 - Fatal编程技术网

如何在这个LINQ查询中使用let?

如何在这个LINQ查询中使用let?,linq,entity-framework,linq-to-sql,c#-4.0,Linq,Entity Framework,Linq To Sql,C# 4.0,以下是我的具有多个联接的LINQ查询: 它工作得很好,但我需要在它的工作做一个增强 var selectedResults= from InvoiceSet in Invoices join BookedAreaSet in BookedAreas on InvoiceSet.InvoiceID equals BookedAreaSet.InvoiceID join AreaSet in Areas on BookedAreaSet.AreaID equals A

以下是我的具有多个联接的LINQ查询:

它工作得很好,但我需要在它的工作做一个增强

    var selectedResults=
    from InvoiceSet in Invoices
    join BookedAreaSet in BookedAreas on InvoiceSet.InvoiceID equals BookedAreaSet.InvoiceID
    join AreaSet in Areas on BookedAreaSet.AreaID equals AreaSet.AreaID
    join ContactSet in Contacts on InvoiceSet.ContactID equals ContactSet.ContactID
    join Contacts_ObjectsSet in Contacts_Objects on ContactSet.ContactID  equals Contacts_ObjectsSet.ContactID
    join CompanySet in Companies on Contacts_ObjectsSet.ObjectReferenceID  equals  CompanySet.CompanyID
    join Customer_CustomerGroupSet in Customer_CustomerGroup on Contacts_ObjectsSet.ObjectReferenceID equals Customer_CustomerGroupSet.CustomerID
    join CustomerGroupDiscountsSet in CustomerGroupDiscounts on Customer_CustomerGroupSet.CustomerGroupID equals CustomerGroupDiscountsSet.ID
    join InvoiceStatusSet in InvoiceStatus on InvoiceSet.InvoiceStatusID equals InvoiceStatusSet.ID
    where Contacts_ObjectsSet.ObjectReference=="Company" 
//let minDate=(BookedAreaSet.LeasedDate).Min() where BookedAreaSet.InvoiceID=InvoiceSet.InvoiceID
    select new {licensee=(CompanySet.CompanyName),CustomerGroupDiscountsSet.CustomerGroup,AreaSet.Location,InvoiceSet.InvoiceNumber,InvoiceSet.Amount,InvoiceSet.TotalDiscount,InvoiceSet.GST,
    Paid=(InvoiceSet.InvoiceStatusID==2 ? "Paid":"UnPaid"), 
    datePaid=(InvoiceSet.PaymentDate),InvoiceSet.PaymentDate//,miDate



    };
在查询中,我已对我要添加的内容进行了注释,并在选择中进行了注释。从BookedArea表中,我希望获得每个invoiceID的最小租赁日期

我刚刚开始使用LINQ,所以不知道怎么做

请引导我

谢谢

试试这个:

var selectedResults=
    from InvoiceSet in Invoices
    join BookedAreaSet in BookedAreas on InvoiceSet.InvoiceID equals BookedAreaSet.InvoiceID
    join AreaSet in Areas on BookedAreaSet.AreaID equals AreaSet.AreaID
    join ContactSet in Contacts on InvoiceSet.ContactID equals ContactSet.ContactID
    join Contacts_ObjectsSet in Contacts_Objects on ContactSet.ContactID  equals Contacts_ObjectsSet.ContactID
    join CompanySet in Companies on Contacts_ObjectsSet.ObjectReferenceID  equals  CompanySet.CompanyID
    join Customer_CustomerGroupSet in Customer_CustomerGroup on Contacts_ObjectsSet.ObjectReferenceID equals Customer_CustomerGroupSet.CustomerID
    join CustomerGroupDiscountsSet in CustomerGroupDiscounts on Customer_CustomerGroupSet.CustomerGroupID equals CustomerGroupDiscountsSet.ID
    join InvoiceStatusSet in InvoiceStatus on InvoiceSet.InvoiceStatusID equals InvoiceStatusSet.ID
    where Contacts_ObjectsSet.ObjectReference == "Company"
    join BookedAreaSet2 in BookedAreas on InvoiceSet.InvoiceID equals BookedAreaSet.InvoiceID into BookedAreas2
    let minDate = BookedAreas2.Select(ba2 => ba2.LeasedDate).Min()
    select new
    {
        licensee = CompanySet.CompanyName,
        CustomerGroupDiscountsSet.CustomerGroup,
        AreaSet.Location,
        InvoiceSet.InvoiceNumber,
        InvoiceSet.Amount,
        InvoiceSet.TotalDiscount,
        InvoiceSet.GST,
        Paid = InvoiceSet.InvoiceStatusID == 2 ? "Paid" : "UnPaid", 
        datePaid = InvoiceSet.PaymentDate,
        InvoiceSet.PaymentDate,
        minDate,
    };