Que*_*ner 7 c# linq ado.net-entity-data-model

我在查询这个问题时遇到了问题(我是LINQ的新手,请原谅我),我花了几个小时在网上搜索.在SQL中我只想这样做
SELECT c.Forname, c.Surname cg.Title, g.GroupName
FROM Contact c
inner join ContactGroup cg on cg.ContactID = c.ID
inner join Group g on cg.GroupNameID = g.ID
WHERE g.ID=1;
Run Code Online (Sandbox Code Playgroud)
我曾经尝试过,但失败了,因为:
var result =
from c in cc.Contacts
from cg in c.ContactGroups
from g in cg.Group
where g.ID==1
select new
{
c.Forename,
c.Surname,
cg.Title,
g.GroupName
};
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么或指导我到某个地方获取更多信息吗?
非常感谢.
我会稍微改变一下,然后使用ContactGroup表格开始查询.这样你就可以"访问"所有3个表.
from c in cc.ContactGroups
where c.GroupNameID == 1
select new {
c.Contact.Forename,
c.Contact.Surname,
c.Title,
c.Group.GroupName
}
Run Code Online (Sandbox Code Playgroud)
这是SQL产生的Linqpad(使用Linq to Sql但EF不会太不同) - 它几乎与您的查询完全一样.
-- Region Parameters
DECLARE @p0 Int = 1
-- EndRegion
SELECT [t1].[Forename], [t1].[Surname], [t0].[Title], [t2].[GroupName]
FROM [ContactGroups] AS [t0]
INNER JOIN [Contacts] AS [t1] ON [t1].[ID] = [t0].[ContactID]
INNER JOIN [Groups] AS [t2] ON [t2].[ID] = [t0].[GroupNameID]
WHERE [t0].[GroupNameID] = @p0
Run Code Online (Sandbox Code Playgroud)