LINQ可以处理Has-Many-Through关系(以及如何完成)?

时间:2014-02-28 15:40:33

标签: c# linq

我来自Ruby on Rails背景,并且是Linq的新手。使用这种方法很容易与我的大多数模型建立Has-Many关系:

public class Person
{
    [Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL", IsDbGenerated = true)]
    public int ID;
    [Column]
    public string Name;

    [Association(Storage = "Carts", ThisKey = "CartID")] // Let's assume this exists
    public EntitySet<Cart> Items
    {
        get { return this._Carts; }
        set { this._Carts.Assign(value); }
    }
    private EntitySet<Cart> _Carts = new EntitySet<Cart>();
}

这就是让我做的事情:

foreach (Cart cart in person.carts)
{
    // Do stuff...
}

但是,让我们说Cart可以访问另一个名为Items的实体集,目前我不得不这样做:

foreach (Cart cart in person.carts)
{
    foreach (Item item in cart.items)
    {
       // Do stuff
    }
}

可以/如何设置Cart以便我可以执行此操作:

foreach (Item item in person.carts.items)
{
    // Do stuff
}

1 个答案:

答案 0 :(得分:9)

使用SelectMany展平一系列序列:

foreach (Item item in person.carts.SelectMany(cart => cart.items))
{
}