我有以下课程:
public partial class Application
{
public Application()
{
this.TestAccounts = new List<TestAccount>();
}
public int ApplicationId { get; set; }
public string Name { get; set; }
public virtual ICollection<TestAccount> TestAccounts { get; set; }
}
public partial class TestAccount
{
public TestAccount()
{
this.Subjects = new List<Subject>();
}
public int TestAccountId { get; set; }
public string Name { get; set; }
public int ApplicationId { get; set; }
}
在我的代码中,我有以下内容,它返回IQueryable<Application>
一条记录。
var applications = DbSet.Where(a => a.ApplicationId == applicationId)
如何更改此内容以使其返回:ICollection<TestAccount>
答案 0 :(得分:4)
当您收到一系列Application
并希望收到一系列TestAccount
时,可以在TestAccounts
的{{1}}属性中找到该序列,序列使用Application
LINQ方法。尝试使用下一个代码段:
SelectMany
它将返回所有DbSet.Where(a => a.ApplicationId == applicationId)
.SelectMany(app => app.TestAccounts)
.ToList();
的列表,这些列表已收集在您的内容中
TestAccounts
。
IQueryable<Application>
会将数据带入内存并将其分配给ToList
接口(ICollection<T>
实现List<T>
)