简体   繁体   English

Linq to SQL查询SubQuery

[英]Linq to SQL query SubQuery

I have a follow up question on the question I asked here 关于我在这里提出的问题,我有一个跟进问题

here are all of my Linq query 这是我的所有Linq查询

This is query 1: 这是查询1:

var RCode = from a in DbEntity.MobileAssetDowntimeReasonCodes 
            where a.MobileAssetCategoryId.Equals(reasonCode) 
            select new 
            { 
                a.JdeReasonCode 
            };

ReasonCode.DataSource = RCode.ToList();
ReasonCode.DataBind();

this brings a resulting codes that are displayed in DataGrid. 这会带来在DataGrid中显示的结果代码。

here is Query 2 which also works 这里是查询2也可以

var RJDEReasonCode = from a in JDETable.F0005
                                 where
                                   a.DRSY.Equals("00") &&
                                   a.DRDL01 != null &&
                                   (a.DRRT.Equals("W4") ||
                                   a.DRRT.Equals("W5")) &&
                                   a.DRKY.Trim() == "801"
                                 select new
                                 {
                                     CATEGORY_CODE = a.DRRT,
                                     REASON_CODE = a.DRKY,
                                     DESCRIPTION = a.DRDL01
                                 };

But instead of hardcoding "801" I want to pass the result of the query1 to query 2 and display query 2 results in my dataGrid. 但不是硬编码“801”我想将query1的结果传递给查询2并在我的dataGrid中显示查询2结果。 how do I do that ? 我怎么做 ?

Something like this? 像这样的东西?

List<string> RCode = DbEntity.MobileAssetDowntimeReasonCodes
    .Where(a=>a.MobileAssetCategoryID.Equals(reasonCode))
    .Select(a=>a.JdeReasonCode).ToList();

var RJDEReasonCode = JDETable.F0005
    .Where(a=>a.DRSY.Equals("00") && a.DRDL01 != null &&
             (a.DRRT.Equals("W4") || a.DRRT.Equals("W5")) &&
              RCode.Any(code => code.Contains(a.DRKY.Trim())))
    .Select(a=>new { CATEGORY_CODE = a.DRRT,
                     REASON_CODE = a.DRKY,
                     DESCRIPTION = a.DRDL01
    });

Uses the Enumerable.Any Method to check if the retrieved RCodes are one of the codes in your F0005 table. 使用Enumerable.Any方法检查检索到的RCode是否是F0005表中的代码之一。

var RJDEReasonCode = from a in JDETable.F0005
                     where
                         a.DRSY.Equals("00") &&
                         a.DRDL01 != null &&
                         (a.DRRT.Equals("W4") ||
                         a.DRRT.Equals("W5")) &&
                         //and use it checking if it contains a.DRKY.Trim() 
                         RCode.Contains(a.DRKY.Trim())
                      select new
                      {
                                     CATEGORY_CODE = a.DRRT,
                                     REASON_CODE = a.DRKY,
                                     DESCRIPTION = a.DRDL01
                      };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM