如何使用LINQ在类中返回集合的内容?

时间:2013-03-18 11:27:45

标签: c# linq

我有以下课程:

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>

1 个答案:

答案 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>