タイトルが意味をなさないことを願っています。子要素との一致に基づいて要素を返すLINQ
親要素のプロパティと一致しない子オブジェクトの子オブジェクトのすべての要素を返すLINQクエリを生成しようとしています。
うまくいけば、私はその説明であなたを失っていないと思います。私は具体的な例が私が何をしようとしているのかを説明するのに役立つかもしれないと思う。
私は三つのクラスと列挙型があります。
public class Studio
{
public int StudioId { get; set; }
public string StudioName { get; set; }
public Style Style { get; set; }
public virtual ICollection<Designer> Designers { get; set; }
}
public class Designer
{
public int DesignerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int StudioId { get; set; }
public virtual Studio Studio { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal Price { get; set; }
public int DesignerId { get; set; }
public Style ProductStyle { get; set; }
public virtual Designer Designer { get; set; }
}
public enum Style { Classic, Preppy, Modern, Punk, Goth }
を各スタジオには、その全体的なStyle
があり、それぞれProduct
は、独自のスタイルを持っています。 Product
が一致しないスタイルの哲学でStudio
に表示される場合があります。
クエリが一致しないStudio
にあるProducts
を含むIEnumberable<Product>
を返すクエリを生成することはできますか。
私が働くトリプルネストされたループを作成しましたが、私は(ドット表記を使用して)LINQ文の中にそれを変換するいくつかの助けを期待していた:
public IEnumerable<Product> GetProductsWithOutsideStyles(Studio studio)
{
List<Product> products = new List<Product>();
foreach (Studio s in StudioContext.Studios.Where(s => s == studio))
{
foreach(Designer d in s.Designers)
{
foreach(Product p in d.Products)
{
if (p.ProductStyle != s.Style)
products.Add(p);
}
}
}
return products;
}