問題タブ [igrouping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linq - LINQでグループ化した後、選択を使用してネストされた値を取得する方法
http://img51.imageshack.us/i/linqquestion.png/
すべてが絵の中にあります。
sizeなど、強調表示された値の 1 つにアクセスしたいだけです。
画像からのコード:
sql - group by句を使用するときに、Linqクエリでネストされた射影を作成するにはどうすればよいですか?
SQLから戻ってくるグループ化されたデータを処理しようとしています。私が書いている方法は、「ケースステータスの概要」画面のデータを提供することです。ネストされたXMLドキュメントを生成する必要があります。
今では簡単な方法で実行できますが、linqの "group by"ステートメントを使用して、既にネストされているデータを投影できるかどうかを調べようとしています。(簡単な方法は、データベースから表形式でデータをプルバックし、それをforループして出力用のXmlドキュメントを形成することです)
データ階層は次のとおりです。
すべてのケースにはDebtTypeがあり、すべてのDebtTypeにはクライアントがあります。
データを取得するSQLは次のとおりです。
Linqerを使用して、次のように変換します。
さて、私が言ったように、そこで停止して、Xmlデータを作成するためのforループを正しくすることができます。IGrouping<ClientName,IGrouping<DebtType,SummaryClass>>
しかし、ネストされたグループ( )を作成してから、データをネストされた形式で投影しようとしています。
現在、LinqToXsdを使用してout Xmlドキュメントの強力な型ラッパーを作成していますが、基本的にこれは、out出力型が次のことを意味します。
今、私は次のLinqを書くところまで来ました:
これは、データベーステーブルを結合してグループ化し、結果をClientSummaryに投影しようとします(クラス名は異なりますが、上記は出力クラスの簡略化されたビューであるためです)。Casesテーブルまでドリルダウンすると完全に失敗し、集計関数の実行方法がよくわからないことがわかりました。それらはsでのみ利用可能でIGrouping<K, T>
あるように見え、私は混乱しているようです。
また、要約がサーバー側で計算されるようにする必要があります。何百万ものケースを引き戻すのは悪いことです。
誰かがこれを手伝ってくれますか?これも可能ですか?
よろしく、
ジェームズ。
------- ### UPDATE 1 ### -------
OK、今日もこれに取り組んでいます。Linq2SQLを使用してパック2Dデータをプルし、Linq2Objectsを使用して再フォーマットすることにしました。
これが私が始めたものです:
これは実行されますが、結果ごとに1つのClient / DebtType/Summaryセットが生成されます。したがって、この場合、クライアントは1つだけですが、最終的には1300のクライアントになり、すべて同じになります。私はそれを次のように単純化しました:
これにより、1300のクライアントが生成されます。次に私はこれを試しました:
そして、それは1つのクライアントを生成します(万歳!)。すべてのクライアント情報を失うことを除いて(ブー!)、コンテンツではなく参照によってクライアントを比較しているので、次のように書きました。
それは何もしませんでした。を繰り返し呼び出しGetHashCode()
、一致するClientIDに対して同じハッシュコードを返すように強制しましたが、それでも1300のクライアントグループが作成されました。
よろしく、
ジェームズ。
------- ### UPDATE 2 ### -------
OK、Linq2Sqlが次のようにグループ化するための単純な値のみを出力するようにすることに挑戦したいと思いました。
次に、テストLinq2Objectsを次のように変更しました。
それはうまくいきます。したがって、匿名タイプは、(明らかに)参照されていないコンテンツによって、私が望む方法で比較します。これは次のことを行いません。
それでも1300のグループが作成されます。
だから、匿名のタイプは私が理解できない魔法の方法で比較します。Client
クラスを匿名タイプのように比較するにはどうすればよいですか?
よろしく、
ジェームズ。
-------###ソリューションが見つかりました###-------
-------###謎めいたことに感謝します###-------
Equals()
==演算子を実装する代わりに、メソッドをオーバーライドする必要がありました。これでグループ化が機能し、再利用できるすばらしいXmlドキュメントができました。
どうもありがとう、
ジェームズ。
linq - Linq: 空の IGrouping を作成する
入力された一連の値を要約する関数を Linq を使用して作成したいと思います。関数は次のようになります。
問題は、着信シーケンスにそのキーの値が含まれていない場合でも、結果の IDictionary に default(TKey) のエントリが必要であるということです。これは純粋に機能的な方法で行うことができますか? (変更可能なデータ構造を使用していません。)
私が考えることができる唯一の方法は、辞書にパイプする前にルックアップで .Union を呼び出すことです。しかし、それには空の IGrouping を作成する必要があり、これは明示的なクラスなしでは可能ではないようです。これを行うエレガントな方法はありますか?
編集: TKey は値型であると想定できます。
c# - IGrouping から値を取得する方法
IGrouping
とそのSelect()
方法について質問があります。
私がIEnumerable<IGrouping<int, smth>>
このように持っているとしましょう:
はどこlist
ですかList<smth>
。
そして今IGrouping
、何らかの方法でそれぞれの値を別のリストに渡す必要があります:
そのようなコンテキストでList<smth>
から値 ( )を取得する方法を提案できる人はいますか?IGrouping<int, smth>
c# - IEnumerableかどうかの検出グループ化されているので、タイプをチェックするとクレイジーな結果が得られます
そのため、メソッドに渡されたランダムなIEnumerableがグループ化されているかどうかを調べようとしています。グループ化されたデータを別の方法で処理するという考え方です。私の問題は、IGrouping<>
非ジェネリックインターフェイスを実装していないジェネリックインターフェイスであり、何らかの理由でis
ステートメントでテストできないことです。
これをテストするために、ここに私のサンプルコードがあります:
出力は次のとおりです。
したがって、グループ化されている値のタイプを知らない限り、グループ化されているかどうかをテストすることはできないようです。これは.NetFrameworkのバグですか?
上記の結果はどのように可能ですか?
編集:ジョンスキートの答えは死んでいた...私が持っていたのと同じ困難でここにいる他の人への礼儀として、次のコードはIEnumerableがグループ化されているかどうかを確認する仕事をしました(Mrに基づいて.dynamicキーワードを使用するというSkeetの派手なアイデア):
コードが上記と同じであると仮定します。
linq - Repeater ItemDataBound で IGrouping データを取得する
リピーターでニュース記事を年ごとにグループ化したいと考えています。形式は次のとおりです。
2010年
記事一覧
2011年
記事一覧
私のアクセス レイヤーは、ニュース記事のフラット リスト、具体的には List を返します。したがって、次のようにそれらをグループ化し、リピーターにバインドしています。
問題は、ItemDataBound イベント内からリストを取得しようとしていることです。これまでのところ、私は次のものを持っています:
何か案は?
前もって感謝します!
.net - グループ化されたデータに対するノックアウト foreach データ バインド
ノックアウト foreach データ バインドを使用して .Net グループ化を反復する方法を理解しようとしています。私が抱えている問題は、JSON にシリアル化された IGrouping の .Net コレクションを反復処理する方法がわからないことです...
サーバー側には、次のような .Net オブジェクトがあります。
そして、エンティティGrouped
のコレクションを. 次に、 JSON を使用してエンティティを返します。プロパティ用に生成された JSON は次のようになります (生成されたものの概要をわかりやすくするために、ノードを折りたたんだり展開したりしています)。BookingLeg
StartDate
BookingResult
Grouped
クライアントでやりたいことは、テンプレートを作成し、キーをリスト ヘッダーとして出力するノックアウト foreach バインディングにバインドし、そのキーのすべての値について、値から詳細を出力することです。次のようになります。
私はこれを次のようにしようとしました:
上記が間違っていることはわかっています.1つは、グループ化されたキーが存在しないことです。
テンプレートを作成して、グループ化のキーと値をリストに正しく出力する方法を知っている人はいますか? ところで、ここではjquery mobileも使用しています(したがって、データロールのものです)。
ありがとう!
ジェームズ
c# - IGrouping からすべての値を取得する
私は現在持っています:
このコードから:
PortableKey のコードは次のとおりです。
基本的に、重複しているすべてのファイルをフィルタリングして取得します。この方法ですべての FileInfo を取得するにはどうすればよいですか?
c# - IEnumerable を表示する方法> エディター テンプレートを使用
ヘッダーでグループ化したアイテムがたくさんあります。
ヘッダー テキストの後に個々の項目のエディター テンプレートが続くページにそれらを表示したいと思います。
次のようにネストされたテンプレートを使用してみました:
メインページ:
ListofGrouping エディター テンプレート:
IGrouping エディター テンプレート:
これは最後の行まで機能します。すべてのヘッダー値を取得しますが、個々の項目は表示されません。
この方法で動作させることができない場合は、データ グリッドを使用してそこでグループ化を行いますが、これは MVC3 で可能であると考えました。
c# - AutoMapper を使用してグループ化されたコレクションをマッピングする
動作していない次のコードがあります。
次の例外が発生し続けます。
値 \"System.Collections.Generic.List
1[SCGRE.Business.Model.ZoneDTO]\" is not of type \"System.Linq.IGrouping
2[System.String,SCGRE.Business.Model.ZoneDTO]\" は、この汎用コレクションでは使用できません。\r\nパラメーター名: 値
なぜ aList<T>
を anにマップしようとしているのかわからない、IGrouping<String, T>
または例外を適切に理解していなかったのかもしれません...しかし、基本的に a があり、IEnumerable<IGrouping<String, Zone>>
それをにマップしたいIEnumerable<IGrouping<String, ZoneDTO>>
次のように からZone
へのマップを作成したことに注意してください。ZoneDTO
これは、両方のクラスがほぼ同じプロパティを持っているためです。
何か案は?