2011-01-31 3 views
0

私は、終了する前にいくつかのメタデータを収集する必要があるC#プログラムを通過するタブーデータを持っています。メタデータは、常にデータのフィールドに基づいてカウントされます。また、私はそれらをすべてデータの1つのフィールドでグループ化する必要があります。定期的に、このメタデータのコレクションに新しいカウントを追加する必要があります。テーブルにメタデータを収集

私はしばらくの間それを研究していましたが、意味があるのは、データをDataTableとして保存してからテーブルでLINQクエリを実行するプログラムを修正することです。私が抱えている問題は、さまざまな数を1つのテーブルのような構造に置き、それを書き出すことができることです。

私はこのようなクエリを実行する可能性があります

var query01 = 
    from record in records.AsEnumerable() 
    group record by record.Field<String>("Association Key") into associationsGroup 
    select new { AssociationKey = associationsGroup.Key, Count = associationsGroup.Count<DataRow>() }; 

がフィールド協会キーでグループ化されたすべてのレコードの数を取得するには。私は別のカウントを同じ方法でグループ化したいと思う:

var query02 = 
    from record in records.AsEnumerable() 
    where record.Field<String>("Number 9") == "yes" 
    group record by record.Field<String>("Association Key") into associationsGroup 
    select new { AssociationKey = associationsGroup.Key, Number9Count = associationsGroup.Count<DataRow>() }; 

など。

Unionクエリをチェーンしようと思っていましたが、匿名型に投影しているので、それらをユニオンにするのに問題がありました。私は労働組合の仕事をより良くするためにそれをどうやってやるべきかを理解できませんでした。

メタデータをどのようにして1つのテーブルのような構造に集めることができますか?

答えて

0

私はDataTableとして必要なレコードのセットを保持するクラスを作成することによって問題を解決しました。ユーザーはメソッドを介してクエリを追加できます。引数はFunc<DataRow, bool>です。このメソッドは、その引数をwhere句として指定するクエリを作成し、結果として得られる匿名型オブジェクトに同じグループ化とプロパティを保持します。

結果を取得するとき、クラスは保存された各クエリを繰り返し処理し、結果を新しいDataTableに入力します。

0

種類が異なるため、組合に参加しません。両方の有名型にNumber9CountとCountを追加して、再び共用体を試してください。