2017-02-09 5 views
0

私はクラスOrderの配列を保持するクラスCustomerを持っています。LINQを使用してC#でオブジェクトの総数を検索する

class Customer 
{ 
    public string firstname { get; set; } 
    public string lastname { get; set; } 

    public Order[] orders {get; set;} 
} 

すべての顧客の注文総数を確認するにはLINQを書く必要がありますが、その方法はわかりません。たとえば、私は8人の顧客を作成しており、それぞれ3つの注文があるので、24を印刷する必要があります。

何か助けてください!

+0

あなたはすでにやったいくつかのコードを提供していただけますか? – kat1330

答えて

3

いずれかを使用できます。

// flattens order collection. 
var result = custList.SelectMany(x => x.orders).Count(); 

または

var result = custList.Sum(x=>x.orders.Count()); 
+0

はい、そのトリックをやった!ありがとうございました。私はオブジェクトのオブジェクトにLINQを使う方法を理解していると思います。 – jasmine

+0

問題ありません、私はそれが助けてうれしいです。 –

0
var result = custList.SelectMany(x => x.orders).Count(); 
+0

ご返信ありがとうございます。だから、おそらく各顧客のための注文を見ているが、顧客あたりの注文の数をカウントしていない私は8を返します。私のケースでは24を返すはずです – jasmine

+0

その場合はselectManyを使うべきです – Sajeetharan

+0

正しい - 選択は顧客ごとに「Order []」を返し、次にそれらの数を数えます。これは顧客数と同じになります。上の答えで提案されているように 'Sum'または' SelectMany'を使う必要があります。 – Geekrocket

0

あなたはSelectMany()を使用する必要があります。このメソッドはすべての注文の1つのリストを作成します。そして、あなたが数えることが可能です。

var allordersNumber = customers.SelectMany(x => x.Orders).Count();

MSDNSelectMany()についての詳細をお読みください。

0

あなたは確かvar countOfOrders = customers.SelectMany(x => x.orders).Count();としてそれを行うことができますが、多くはこのようにそれがより読み見つける:

var orders = 
    from c in customers 
    from o in c.orders 
    select o; 

var countOfOrders = orders.Count(); 
関連する問題