0

我对我在这里提出的问题有一个后续问题

这是我所有的 Linq 查询

这是查询 1:

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

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

这带来了在 DataGrid 中显示的结果代码。

这是查询 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
                                 };

但是,我不想硬编码“801”,而是想将 query1 的结果传递给查询 2,并在我的 dataGrid 中显示查询 2 结果。我怎么做 ?

4

2 回答 2

2

像这样的东西?

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
    });

使用Enumerable.Any 方法检查检索到的 RCodes 是否是 F0005 表中的代码之一。

于 2013-07-11T19:45:53.230 回答
0
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
                      };
于 2013-07-11T19:39:20.920 回答