尝试在子查询上执行linq查询返回

时间:2017-06-06 23:30:32

标签: c# entity-framework linq

我甚至不确定如何提出问题,如果有人想在阅读后提出建议,我会更新。

从业务角度来看问题是我需要知道过去是否有任何止损(交付)已经为它们生成了文件。生成此文件时,将创建日记帐分录,其记录类型为40,日期以及匹配的ID号。

我在C#(6)Linq中有一个linq查询到实体。 我需要一个返回的字段,如果另一个查询找到任何内容,则计数或只返回true。

以下是查询的一部分:

var stopDetails = (from d in dbContext.stop_details
                           join c in dbContext.customers on d.customer_id equals c.id
                           join name in dbContext.driver_details on d.assigned_driver_id equals name.ddp_driver_id
                           join journal in dbContext.stop_journals on d.id equals journal.stop_details_id
                           where (d.verified_ship_date >= startDate && d.verified_ship_date <= endDate)
                           select new
                           {
                               d.ship_date,
                               stopID = d.id,
                               d.verified_ship_date,
                               d.assigned_driver_id,
                               driverName = name.first_name + " " + name.last_name,
                               fullDriverInfo = d.assigned_driver_id + " - "+ name.first_name + " " + name.last_name,
                               d.cust_ref_1_BOL,
                               d.cust_ref_2_OrderNum,
                               d.cust_ref_3_stopID,
                               d.con_name,
                               d.con_address1,
                               d.con_address2

我需要知道的是,如果stop_journal中的每个记录都包含record_type为45且dateTimeRef == verified_ship_date的记录。

如果我不能像这样在前端弄清楚,我可能会直接浏览数据网格(结果发布的地方)并以这种方式更新每一行。

所以伪代码会是这样的: 对于每一行,如果有一个日记帐分录,其中stop_details_id匹配stopID和dateTimeRef == verified_ship_date并且record_type为40,则设置FoundFlag = true

1 个答案:

答案 0 :(得分:0)

如果存在,您可以使用.Any()进行操作,然后只需在您的选择中输入您的查询:

FoundFlag = (from j2 in dbContext.stop_journals where j2.stop_details_id == d.id &&
             j2.dateTimeRef == d.verified_ship_date && j2.record_type == 40 select j2).Any()