【问题标题】:Add Join to this LINQ Query将联接添加到此 LINQ 查询
【发布时间】:2012-04-22 12:10:00
【问题描述】:

我正在使用以下查询,但无法弄清楚如何向其中添加联接:

var chi = Lnq.attlnks.Where(a => a.ownerid == emSysid)
                     .Select(c => new { sysid });

如何将其加入“附加”表 (ON attlnks.sysid = attach.sysid) 并选择“名称”,其中 sysid 是行 ID?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    对于 Linq 中的联接,查询表达式形式通常比 lambda 语法更具可读性 - 我相信这就是您所要求的:

    var chi = from t in Lnq.attach
              join a in Lnq.attlnks
              on t.sysid equals a.sysid
              where a.ownerid == emSysid
              select t.name;
    

    如果最多只有一个条目应该匹配,您可以在这种情况下链接FirstOrDefault()(或其他替代方案,如 SingleOrDefault、Single、First 等):

    var chi = (from t in Lnq.attach
              join a in Lnq.attlnks
              on t.sysid equals a.sysid
              where a.ownerid == emSysid
              select t.name).FirstOrDefault();
    

    【讨论】:

    • 我对方法语法很熟悉,那么在 Lambda 中做是一团糟呢?看了我找到的例子,我有点印象,谢谢
    【解决方案2】:

    如果我理解你的问题,这应该可以正常工作:

    var query = from a in attlinks
         join aa in attach on a.sysid equals aa.sysid into a2
         where a2.sysid == a2.ownerid 
         select a2.Name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多