【问题标题】:LINQ JOIN with WHERE condition带有 WHERE 条件的 LINQ JOIN
【发布时间】:2016-07-13 19:57:49
【问题描述】:

我在使用 lambda 表达式创建 LINQ 查询时遇到问题。我需要加入两个表并提出一些条件。我有两张表 MSR 和 BOMDetail。

MSR 有这些列 -> MSRID、PN、Buyer、Plant EditDate。 BomDetail 有这些列 -> BOMID、PN、AltQty、Plant、EditDate。

我需要将此查询写入 LINQ。

SELECT MSR.PN, Buyer, MSR.EditDate, MSR.Plant FROM MSR 
JOIN BomDetail bd ON MSR.PN = bd.PN AND MSR.Plant = bd.Plant
WHERE LEN(ISNULL(bd.AltQty,''))>0

我需要在表格和工厂之间设置 2 个条件 PN 必须相等。 我有 asp.net MVC 中的结果 ViewModel。

public class MSRViewModel
{
    public string PN { get; set; }
    public string Buyer { get; set; }
    public string Plant { get; set; }
    public DateTime EditDate { get; set; }

}

这是我的示例,它工作正常,但我不知道我必须在哪里写 bd.Plant = MSR.Plant 的第二个条件。

var data = DbContext.BomDetails.Where(x => !string.IsNullOrEmpty(x.AltQty))
                        .Join(DbContext.MSRs
                        , bd => bd.PN,
                        msr => msr.PN,
                        (bd, msr) => new MSRViewModel
                        {
                            PN = msr.PN,
                            Buyer = msr.Buyer,
                            Plant = msr.Plant,
                            EditDate = msr.EditDate
                        }).ToList().AsEnumerable();

谢谢。

【问题讨论】:

    标签: asp.net-mvc entity-framework linq lambda


    【解决方案1】:

    你可以这样做:

    var data = DbContext.BomDetails.Where(x => !string.IsNullOrEmpty(x.AltQty))
                        .Join(DbContext.MSRs
                        , bd => new { bd.PN, bd.Plant },
                        msr => new { msr.PN, msr.Plant },
                        (bd, msr) => new MSRViewModel
                        {
                            PN = msr.PN,
                            Buyer = msr.Buyer,
                            Plant = msr.Plant,
                            EditDate = msr.EditDate
                        }).ToList().AsEnumerable();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多