1

SQL データベースの次のデータから取得しようとしています

date                    |    user   |
(DateTime)              |   (string)|
--------------------------------------------------
2013-06-03 13:24:54.013 |     3     |
2013-06-04 13:25:54.013 |     5     |
2013-06-04 13:26:54.013 |     3     |
2013-06-04 13:27:54.013 |     3     |

フォームのリスト

date        | DistinctCountUser
---------------------------------
2013-06-03  | 1
2013-06-04  | 2

私は linq でこれを行ういくつかの方法を試しましたが、常に a) 期待した結果ではないか、b) linq 例外が発生します。

4

3 に答える 3

2

Entity Framework を使用している場合は、EntityFunctions.TruncateTimeを使用して日時フィールドの日付部分を取得する必要があります。

 from x in context.TableName
 group x by EntityFunctions.TruncateTime(x.date) into g
 select new {
     date = g.Key,
     DistinctCountUser = g.Select(x => x.user).Distinct().Count()
 }

それ以外の場合は @KingKong の回答を使用してください

于 2013-11-04T15:07:17.093 に答える
1

Linq でグループ化する際のクエリ式の使い方は次のとおりです。クエリ式の方が読みやすい場合もあり、グループ化もその 1 つです。

from thing in things
group thing by thing.date.Date into g
select new {
    Date = g.Key,
    DistinctCountUser = g.Select(x => x.user).Distinct().Count()
}
于 2013-11-04T15:09:36.730 に答える