【问题标题】:C# LINQ .net core syntax issue with Inner Join and Where内部联接和位置的 C# LINQ .net 核心语法问题
【发布时间】:2021-06-13 20:38:24
【问题描述】:

我正在用 .net core 3 和 entityframework core 编写一个用于内部连接和 where 子句的 c# linq。我在这里查看了一些帖子,但语法不同,我的 Visual Studio 2019 智能感知现在向我显示正确的表属性。

这是我在完成查询时遇到问题的代码

this.myDbContent.Table1
  .Join(this.myDbContent.Table2,
    table1 => table1.id,  // intellisense picked up this id for Table1
    table2 => table2.id,  // intellisense did now the table 2 properties, a drop shows [equals, getHashCode, getType, toString]
    (table1, table2) => new myViewModel
    {
      id = table1.id,
      name = table1.name
    }
  )
  .Where(table2 => table2.isCompleted === true) // intellisense is not showing the table 2 properties

我关注了一个 linq 帖子,但我注意到找到的大多数帖子都是较旧的 .net 版本,我使用的是最新的 .net 核心和 entityFrameworkCore。我不确定为什么没有显示智能感知供 table2 属性选择。我照原样遵循演示帖子语法,但不确定为什么在我的视觉工作室中不起作用。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: .net .net-core entity-framework-core


    【解决方案1】:

    Join 调用的最后一个参数是resultSelector

    resultSelector 表达式>

    从两个匹配元素创建结果元素的函数。

    所以table2 的类型是myViewModel。你可以这样做:

    this.myDbContent.Table1
      .Join(this.myDbContent.Table2,
        table1 => table1.id,  
        table2 => table2.id,  
        (table1, table2) => new {table1, table2}
      )
      .Where(jr => jr.table2.isCompleted == true) 
    

    或在连接中应用过滤器:

    this.myDbContent.Table1
      .Join(this.myDbContent.Table2.Where(table2 => table2.isCompleted == true),
        table1 => table1.id,  
        table2 => table2.id,
        (table1, table2) => new myViewModel
        {
          id = table1.id,
          name = table1.name
        }
      )
     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2011-01-11
      • 1970-01-01
      相关资源
      最近更新 更多