1

このlinqクエリで残りの選択キーを取得しようとしていますが、インテリセンスでエラーが発生しています

var query2 = from row2 in query1
                     group row2 by row2.questionid into g
                     where g.Count() > 0
                     select new
                     {
                         questionid1,   //Error here
                         time,          //Error here
                         thecount = g.Count()
                     };

これらの選択キーを取得するにはどうすればよいですか?

4

2 に答える 2

7

questionidおよび は、グループ化するプロパティであると想定してtimeいます。

グループ化したキーは g からのみ取得できます。Jon が示唆しているように、where 句は実際には何もしません。

これを試して:

var query2 = from row2 in query1
             group row2 by new { row2.questionid, row2.time } into g
//           where g.Count() > 0
             select new
             {
                 g.Key.questionid,
                 g.Key.time,
                 thecount = g.Count()
             };
于 2009-10-13T06:54:57.780 に答える
1

あなたが何を求めているのか、まったく明確ではありません。何時ですか"?questionidとはどう違いquestionid1ますか?

グループ化すると、基本的に一連の質問ではなく、一連のグループが作成されます。これらのグループを射影すると、グループのプロパティを使用してそのグループを形成するキーを取得でき、グループ内の一連の値を使用できます(これはあなたの例で行っていることです)。たとえば、グループ内の最初の結果を取得し、その中の個々のフィールドにアクセスできます。Keyg.Count()

どのようなデータを取得し、何を達成しようとしているのかについて、より多くのアイデアを提供していただければ、私たちがお手伝いできる可能性が高くなります。

追加の注意として、あなたのwhere句は現時点では何もしていません。キーでグループ化すると、「空の」グループが得られることはありません。LINQ は、実際のデータにないキーを作成しません。

于 2009-10-13T06:56:27.373 に答える