【问题标题】:Linq Inner join for different column in same table同一表中不同列的Linq内连接
【发布时间】:2018-11-21 23:31:52
【问题描述】:

我有以下 linq 查询。

    (from q in table1 
join u1 in table2 on q.Field1 = u1.Id
join u2 in table2 on q.Field2 = u2.Id
join u3 in table2 on q.Field3 = u3.Id
select q.Id, u1.Name, u2.Name, u3.Name)

你可以看到,table2 上有 3 次 join,table1 上有不同的列。

有什么方法可以通过 table2 上的单连接来实现上述结果?

谢谢 伊姆兰汉

【问题讨论】:

  • 你想要达到什么目的?
  • 我已经给出了示例查询。假设,我有两个名为 Comment 和 User 的表。在评论表中,我有用户表引用,如 AssignedTo、CreatedBy、UserId。现在我想要一个返回 AssignTo、CreatedBy 和 UserId 的名称以及带有单连接查询的注释文本的查询,
  • @Imrankhan,我的回答对您解决问题有帮助吗?如果是,请将其标记为已接受。如果没有,请告诉我,我会尽力提供进一步帮助。

标签: performance linq


【解决方案1】:

用匿名对象替换额外的joins:

var query = from q in table1 
            join u1 in table2 
            on new { q.Field1, q.Field2, q.Field3 } equals 
               new { u1.Id, u1.Id, u1.Id }
            select new {q.Id, u1.Name};

wheres:

var query = from q in table1 
            join u1 in table2 on q.Field1 equals u1.Id
            where q.Field2 == u1.Id &&
                  q.Field3 == u1.Id
            select new {q.Id, u1.Name};

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2021-03-26
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多