しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

ToLookup を使ってみるテスト

id:NyaRuRu:20080526:p2 より
これはやってみるしかないなと、勝手に脳内解釈したので試してみました。とりあえず単純な使い方を。

TwitterDataContext context = new TwitterDataContext(@"D:\MiniTwitter.sdf");
var result = context.Status.ToLookup(status => status.Source);
foreach (var item in result)
{
    Console.WriteLine(item.Key + " : " + item.Count());
}

ついったクライアント別にステータス数を表示するだけの単純なものです。私のログで試した結果は以下のとおり。

web : 369
Twit : 147
MiniTwitter : 57
TwitterPod : 1
movatwitter : 79
TwitterFox : 39
im : 1
Facebook : 1
twitterfeed : 6
Twinkle : 2

順番はばらばらだけど、ちゃんと動いてますね。ToLookup の結果に対して OrderBy とかを噛ませればソートも出来ると思います。
今度は日付ごとのステータス数を引っ張ってみます。ToLookup を

var result = context.Status.ToLookup(status => status.CreatedAt.ToShortDateString());

のように書き換えました。ToShortDateString は DateTime を 2008/05/27 のような文字列に変換してくれます。そして結果は

2008/05/20 : 49
2008/05/21 : 81
2008/05/22 : 81
2008/05/23 : 107
2008/05/24 : 173
2008/05/25 : 156
2008/05/26 : 55

このような感じです。常に起動してるわけではないのでかなりばらつきがありますが、まあ仕方ないですね。このデータをどのように使うかは、発想力の乏しい私の頭ではなかなか浮かびません(汗
最近 ToLookup を知っていればかなり簡単に書けるようなコードに出会った気がしますが、まったく思いだせないのが勿体無いなぁと思ってみたり。