2016-08-09 11 views
0

これは重複した質問が出てくる場合は、謝罪するつもりですが、解決方法を見つける手がかりはありません。カスタムプロパティのカウントからIEnumerable <Object>を作成する

現時点では、要件と呼ばれる要件の「要件」のIEnumerable <にリストされている「要件」というオブジェクトがあり、その中にさまざまなプロパティがあります。いくつかの方法では、これらのプロパティの1つからリストが生成され、その後、発生量によってグループ化されます。これは次のようになります。

this.AuthorList = this.Requirements.GroupBy(x => x.Author) 
      .Select(x => string.Fortmat("{0} amount {1}", x.Key, x.Count())); 

これは、現在のIEnumerableが文字列型であることを示しています。

1つのIEnumerableレコードに{0}と{1}をゆるやかに入れているので、適切に整列させるために私のビューで{Binding}でそれらを抽出することができますUI。

新しいプロパティを作成したり、リスト<に配置しなければならないと思っていましたが、どうしたらいいかわかりません。どんな助けも歓迎されるでしょう。

うまくいけば、あなたのデータを保持するために新しいクラスを作成し、より明瞭

答えて

0

あなたのオプションは多数あります。あなたはTuple<String, Int32>(私はしたいけれどもを使用することができ、

... 

.Select(x => new { Author = x.Key, Amount = x.Count() }); 

... 

または:あなたは(あなたが実行する方法の外に、このデータ構造を使用する予定の場合は、あなたが何かを行う必要がありますが)匿名型を使用することができますあなたが他の人が実際にあなたのコードを理解することができるようにしたい場合は)それに対して助言:

... 

.Select(x => new Tuple<String,Int32>(x.Key, x.Count())); 

... 

それとも、あなたはより適切にあなたが提供している情報の意味を伝える少ない汎用的なデータ構造を定義することができます。

public class RequirementCount { 

    public String Label { get; set; } 

    public Int32 Count { get; set; } 

} 

それからちょうどそのタイプを選択します。

... 

.Select(x => new RequirementCount { Label = x.Key, Count = x.Count() }); 

... 
+0

私はこのソリューションを必要とするこれら3つの構造をすでに持っているので、どれもプラグインアプリケーション内で最も「受け入れられる」と言えます。私は3つのクラスを作成すると 'ちょうど数える'とは思えないでしょうが、Tupleは読みやすさに妥協し、anontypeは必要なビューには届きません。 – Ciphra

+0

私はタプルを使い、それをうまく文書化すると言うでしょう。可能であれば(ラベルが一意の場合)、代わりに '.ToDictionary 'を使用する方がよいでしょう。 – Dave

2

を作成するための編集:

public class AuthorCount 
{ 
    public string Name { get; set; } 
    public int Count { get; set; } 
} 

とプロジェクト:

AuthorList = this.Requirements.GroupBy(x => x.Author) 
    .Select(x => new AuthorCount {Name = x.Key, Count = x.Count()}) 
    .ToList(); 

AuthorListは今IEnumerable<AuthorCount>が含まれていて、あなたが結合することができますNameCountになります。

+0

私はこの問題を回避するためのクラスを作成することを選択した場合、従来のMVVMの建設で、私はこのクラスを作成する必要があります(したがって、私はこれに遭遇するたびでしょう、別のクラス)別のVMで? – Ciphra

関連する問題