c# - 从另一个子查询获取列值

标签 c# entity-framework linq sql-to-linq-conversion

我有一个 LINQ 查询。但我需要从另一个子查询获取两列的值。这是我的 Linq 查询:

)from t in db.PUTAWAYs
join t0 in db.ASN_ITEM on t.AWB_NO equals t0.AWB_NO
join t1 in db.ASN_MASTER on t0.AWB_NO equals t1.AWB_NO
join t2 in db.ITEM_MASTER on t.ITEM_MASTER.ITEM_CODE equals t2.ITEM_CODE
join t3 in db.ASN_INPUT on t0.AWB_NO equals t3.AWB_NO
where
  t3.ITEM == t2.ITEM_CODE &&
  1 == 1 &&                          
  (fromDate == "" || toDate == "" || (t0.REC_DATE.CompareTo(fromDate) >= 0 && t0.REC_DATE.CompareTo(toDate) <= 0)) &&
  (AWB_NO == "" || (t0.AWB_NO == AWB_NO))
orderby
  t.AWB_NO,
  t0.REC_DATE,
  t0.STYPE,
  t2.PART_NO
select new ASNPutawayRep
{
    AWB_NO = t.AWB_NO,
    REC_DATE = t0.REC_DATE,
    STYPE = t0.STYPE,
    PART_NO = t2.PART_NO,
    //LOCATION_AD = t.LOCATION_AD,
    QNTY = t.QNTY,
    //LOCATION_SD = t.LOCATION_SD,
    REGION_ID = t.REGION_ID
}).Distinct();

在上述查询的选择部分中,而不是直接获取列 t.LOCATION_AD 的值,我需要从 SELECT LOC_NAME FROM LOCATION_MASTER WHERE LOC_CODE = t.LOCATION_AD 获取它

而不是 t.LOCATION_SD ,我需要从 SELECT LOC_NAME FROM LOCATION_MASTER where LOC_CODE = t.LOCATION_SD 获取值

如何在 LINQ 中编写此内容。有什么办法可以做到这一点吗?

最佳答案

您可以使用let条款。存储子表达式的结果以便在后续子句中使用它很有用。

示例:

(from t in db.PUTAWAYs
 ...
 let locAd = from l in LOCATION_MASTER where LOC_CODE = t.LOCATION_SD select l.LOC_NAME
 where
 ...
 orderby
 ...
 select new ASNPutawayRep
 {
     LOCATION_AD = locAd,
 }).Distinct();

此外,您可以直接编写 LINQ,而无需使用 let 子句:

(from t in db.PUTAWAYs
 ...
 where
 ...
 orderby
 ...
 select new ASNPutawayRep
 {
     LOCATION_AD = from l in LOCATION_MASTER where LOC_CODE = t.LOCATION_SD select l.LOC_NAME
 }).Distinct();

关于c# - 从另一个子查询获取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35284329/

相关文章:

c# - 在 Visual Studio 中着色实例变量

c# - EntityFramework.dll 中出现类型为 'System.TypeInitializationException' 的未处理异常

c# - 使用 LINQ 获取两个 IEnumerable 的交集

c# - 针对 MS Access 的 LINQ asp.net 页面。

c# - 如何从列表中删除字符串对象?

c# - 如何在构建后自动实例化单例?

C# 在末尾将数组增加一个元素

c# - Entity Framework 通用存储库错误

web-services - 从 Windows Phone 访问 Windows Azure DB 时出现服务错误

c# - 大文件处理 - 读取算法中断 - C#