2

サブプロパティのすべての可能な値を表示しようとしています。以下では、すべての製品のすべての可能な色を単一の変数に取得しようとしています。以下のallDistinctColorsを取得するにはどうすればよいですか?

IEnumerable<Product> products = GetAllProducts();
IEnumerable allDistinctColors = ???

public class Product
{
  public List<Option> Options { get; set; }
}

public class Option
{
  public string Color { get; set; }
}
4

3 に答える 3

11

SelectMany入力項目 (製品) ごとに複数の出力項目 (オプション) を選択し、さらにクエリを実行するためにそれらを 1 つの列挙に連結するために使用します。

var allDistinctColors = products
    .SelectMany(p => p.Options)
    .Select(o => o.Color)
    .Distinct();
于 2012-07-05T11:42:12.567 に答える
2
var allDistinctColors = products
     .SelectMany(p => p.Options.Select(o => o.Color))
     .Distinct()
于 2012-07-05T11:44:11.563 に答える
1

これには、クエリ構文もうまく機能します。

var allDistinctColors = (from p in products
                         from o in p.Options
                         select o.Color).Distinct();
于 2012-07-05T23:25:53.060 に答える