0

我有以下课程:

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>

4

1 回答 1

4

当您收到一个序列Application并且您想要接收一个序列时TestAccount,可以在TestAccounts属性中 找到它Application,您应该使用SelectManyLINQ 方法展平您的序列。尝试使用下一个代码片段:

DbSet.Where(a => a.ApplicationId == applicationId)
     .SelectMany(app => app.TestAccounts)
     .ToList();

它将返回一个包含所有内容的列表,TestAccounts这些内容收集在您的
IQueryable<Application>.

ToList将数据带入内存并使其可分配给ICollection<T>接口(List<T>实现ICollection<T>

于 2013-03-18T11:29:04.890 回答