select * form autor
inner join (carte inner join carte_autor using id_carte)
using id_autor
group by id_autor;
如何使用 LINQ 编写此代码?
谢谢。
最佳答案
如果您使用设计器创建 DataContext 并适当定义了外键,那么这些应该显示为您的实体类(Entity 或 EntitySet)的属性,具体取决于它是 1-1 还是 1-many。如果您没有分配外键,您也可以在设计器中定义关系。
否则,你可以这样做:
var carteAutors = db.Carte.Join( db.CarteAutor, (o,i) => o.ID_Carte == i.ID_Carte )
.Select( (o,i) => new { ID_Autor = i.ID_Autor, ...et al... } );
var q = db.Autors
.Join( carteAutors, (o,i) => o.ID_Autor == i.ID_Autor )
.Select( (o,i) => new { ID_Autor = o.ID_Autor, ...et al... )
.GroupBy( a => a.ID_Autor );
请注意,这将选择匿名类型。我发现通常在进行连接时,我最终会选择属性子集为匿名(或有时命名)类型,而不是组成连接的实际实体。这就是我以这种方式展示它的原因。当然,您可以保留完整的对象并相应地调整 select/groupby。
关于c# - 如何将 SQL 转录为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393089/