【问题标题】:linq to sql join on multiple columns using lambdalinq to sql 使用 lambda 连接多个列
【发布时间】:2012-05-06 05:21:45
【问题描述】:

谁能帮我翻译一下

var query = from s in context.ShoppingMalls
join h in context.Houses
on
new { s.CouncilCode, s.PostCode }
equals
 new { h.CouncilCode, h.PostCode }
select s;

进入 lambda 查询?

谢谢。

【问题讨论】:

    标签: c# sql linq lambda


    【解决方案1】:
    var query = context.ShoppingMalls
                       .Join(
                           context.Houses,
                           s => new { s.CouncilCode, s.PostCode },
                           h => new { h.CouncilCode, h.PostCode },
                           (s, h) => s);
    

    【讨论】:

    • 编辑给匿名对象键,以便编译器可以推断类型是相同的。
    • 我不知道您的编辑去了哪里,但是如果名称和类型不同,您可以对两个对象执行类似的操作,以便属性名称匹配:new { cc = s.CouncilCode, pc = s.PostCode }
    【解决方案2】:

    虽然@Thomas Levesque 给出的示例和答案适用于匹配的列,但如果您有要加入的列但它们具有不同的名称,我也想提供答案。这就是我在谷歌上搜索所需要的,这个问题让我很接近。

    当然,不同之处在于将列显式声明为要识别的变量。

    var query = context.MapKitsToResources
                  .Join(
                         context.Resources, 
                         o => new { Id = o.ResourceId, Type = o.ResourceTypeId},
                         i => new { Id = i.Id, Type = TypeId},
                         (o, i) = new { rType : i };
    

    【讨论】:

    • 同意你为加入的列明确命名。很好的答案。
    • 这是避免相似列之间歧义并匹配精确列的完美解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2018-10-24
    • 2010-09-25
    相关资源
    最近更新 更多