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>、1 つのレコードを返す次のコードがあります。

var applications = DbSet.Where(a => a.ApplicationId == applicationId)

これを変更して返すにはどうすればよいですか:ICollection<TestAccount>

4

1 に答える 1

4

のシーケンスを受け取り、のプロパティに あるApplicationのシーケンスを受け取りたい場合は、 LINQメソッドを使用してシーケンスをフラット化する必要があります。次のコードスニペットを使用してみてください。TestAccountTestAccountsApplicationSelectMany

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 に答える