次のクエリは、GridViewにバインドできるタイプ<IGrouping<string, ItemsCollection>>
を返します。 CollectionViewSource
と一緒に使用される場合、キー(グループ名として)は、グループヘッダー/タイトルを表示するために使用されます。たとえば、TextBlockにバインドしてGridViewのGroupStyle.HeaderTemplate
にバインドします。<IGrouping <string、ItemsCollection >>のグループ化キーに、バインドのグループ数情報が追加されるように変更できますか?
var query = from ItemObj in ItemsObjCollection
orderby ItemObj.ItemName
group ItemObj by ItemObj.GroupName into groups
orderby groups.Key
select groups;
これまでのところ問題なく、問題なく動作しています。
私は次の試み(難しかったところです)は、グループ名を出力してグループ名を出力するKeyのためのものです。たとえば、 "Group Name [count]"のように変更されますカウントは、クエリのgroups.Count()としてすぐに取得できます。 ItemsObjCollection
がFruitsを表すと仮定すると、ヘッダ出力はApples [10]、Bananas [7]、Oranges [12]などのようになります。
グループ化キーは、出力表示(バインディング経由)の目的で、前述のようにグループカウント情報が付加されるように変更できますか?基本的には、私はKey = $"{groups.Key} [{groups.Count()}]"
が好きですが、どのようにクエリ内で知りません。線に沿ってみました:
select new { Key = $"{groups.Key} [{groups.Count()}]", Items = groups };
が、私の修正キーバインディングに表示されない、これまでに取得していません。私はそれがIGrouping
のインスタンスを作成するのは簡単ではないこともわかります(それはインターフェイスなので)。そして、上記のクエリ文の中でそれを行う巧妙な方法があることを望みます。
文字列と整数を組み合わせるので、これを試してみましょう。select new {Key = groups.Key + groups.Count()。ToString()、Items = groups}; – jdweng
それはそうではありません。私はちょうどC#6.0の最新の文字列補間構文を使用しているので、あなたが言うことと私が言うことは同等です。文字列補間器である$ "{var} ..."を参照してください。 – user2921851
あなたのお問い合わせはOKです。バインディングはどうですか? –