【问题标题】:Linq query using join使用连接的 Linq 查询
【发布时间】:2015-04-22 08:26:57
【问题描述】:

谁能帮我解决这个 sql 查询,我如何在 LINQ 中编写它

SELECT FGA_Vin.vin,
FROM FGA_Vin INNER JOIN Info_Global 
ON  FGA_Vin.Vin='XXXXXXXXXX' AND
    FGA_Vin.NHard=dbo.Info_Global.NHard AND
    Info_Global.NVerHard like '%'+FGA_Vin.NVerHard and
    Info_Global.NVerSoft like '%'+FGA_Vin.NVerSoft
inner join Info_Associa
on Info_Associa.KeyJoined = Info_Global.NomeFile

我试过了

var reportdata =    from Vin in FGA_Vin 
                                join Global in Info_Globals 
                                on Vin.NHard equals Global.NHard 
                                && on Global.NVerHard equals Vin.NVerHard

                                select new XElement("flash",
                                    new XElement("Vin", Vin.Vin),
                                    new XElement("ModelType", Global.Model_Type)
                                );

但是当我在 Global.NVerHard 上添加“&& 等于 Vin.NVerHard”时,它全部为红色。

如果 && 没有响应,我如何使用 join 比较不同表的不同列

谢谢

【问题讨论】:

  • 这不是一个写我的代码的网站。到目前为止你尝试过什么?
  • 我更正了我的问题 Joachim。谢谢

标签: c# sql linq join


【解决方案1】:

可能是这样的:

var result= 
    (
        from v in db.FGA_Vin
        from i in db.Info_Global
            .Where(w=>
                w.NHard==v.NHard &&
                w.NVerHard.Contains(v.NVerHard) &&
                w.NVerSoft.Contains(v.NVerSoft)
            )
        join ia in db.Info_Associa
            on i.NomeFile equals ia.KeyJoined
        where v.Vin=="XXXXXXXXXX"
        select v.vin
    ).ToList();

db 是 linq 数据上下文

【讨论】:

    【解决方案2】:
    var reportdata =    
                    (from Vin in FGA_Vin 
                    join Global in Info_Globals on new {Vin.NHard, Vin.NVerHard } equals {Global.NHard, Global.NVerHard }
                    join Info_Associa on Info_Global.NomeFile equals Info_Associa.KeyJoined
                    where Info_Global.NVerHard.Contains(FGA_Vin.NVerHard)
                    where Info_Global.NVerSoft.Contains(FGA_Vin.NVerSoft)
                    select new XElement("flash",
                        new XElement("Vin", Vin.Vin),
                        new XElement("ModelType", Global.Model_Type)
                    );
    

    【讨论】:

    • 但是如果我必须将不同表中的某些列与 LIKE 进行比较怎么办?我的意思是,如果你检查我的 sql 查询,你会发现我必须检查很多事情
    【解决方案3】:

    试试这样的:-

    var result =
        (
            db.FGA_Vin.SelectMany(v => db.Info_Global
                .Where(w =>
                    w.NHard == v.NHard &&
                    w.NVerHard.Contains(v.NVerHard) &&
                    w.NVerSoft.Contains(v.NVerSoft)
                ), (v, i) => new {v, i})
                .Join(db.Info_Associa, @t => i.NomeFile, ia => ia.KeyJoined, (@t, ia) => new {@t, ia})
                .Where(@t => v.Vin == "XXXXXXXXXX")
                .Select(@t => v.vin)
            ).ToList();
    

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      相关资源
      最近更新 更多