【问题标题】:EF6 Type of JoinEF6 连接类型
【发布时间】:2015-12-29 11:40:50
【问题描述】:

我想弄清楚如何声明一个连接对象。我知道我可以使用 var 这个词并完成它,但我希望完全理解返回的对象的类型以及我将如何声明这样的对象。这是我正在尝试制作的示例:

IQueryable<TeamMember, Member> j =
                Db.TeamMembers.Join(Db.Users,
                c => c.MemberId,
                cm => cm.Id,
                (c, cm) => new { TeamMember = c, Member = cm })
                .Where(m => m.TeamMember.TeamId == team.Id && !m.TeamMember.MemberId.Equals(team.CaptainId));

但是上面的代码不起作用,我得到的错误是

类型参数的数量不正确。

我将如何完成上述任务?

【问题讨论】:

  • 您可以让 Intellisense 为您完成工作。使用var,可能编译,然后将鼠标悬停在var 关键字(不是变量名)上。工具提示将包含变量的类型。

标签: asp.net-mvc-5 entity-framework-6


【解决方案1】:

IQueryable 只接受 1 种 (IQueryable&lt;T&gt;)

这解释了您收到的错误消息。

在您的 JOIN 查询中,您将返回 anonymous 类型(来源:https://msdn.microsoft.com/en-sg/library/bb397696.aspx),所以您可以使用的是

  • IQueryable&lt;object&gt; j =
  • IQueryable&lt;dynamic&gt; j =
  • var j =

无法通过当前代码知道类型,但您始终可以创建另一个模型并使用它

【讨论】:

  • 我一直在尽量避免创建另一个对象,但看起来我必须这样做。
  • @Bagzli:创建新对象仅用于显示目的(ViewModel)或用于传输目的(DataTransferObject)
猜你喜欢
  • 2013-11-16
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
相关资源
最近更新 更多