The road to C# master trapemiya

C#を中心に、.NETの話題を取り上げます。

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  256  : 記事  1  : コメント  10763  : トラックバック  30

ニュース

Since 2005年10月26日

わんくま同盟

わんくま同盟

Microsoft MVP


Visual Developer - Visual C#

記事カテゴリ

書庫

日記カテゴリ

2008年3月26日 #

必要に迫られてネットを漁ったんですが、ありそうで見つからない。しょうがないんで自分で考えてみました。

Regex regexPath = new Regex(@"^[a-zA-z]:(\\|\\[^\\].+[^\\]\\)$")

[a-zA-z]       アルファベットの大文字・小文字に一致。(ドライブレター)
:            ドライブレターの横のコロン
(\\|\\[^\\].+[^\\]\\)   | がorなので、まず\\の部分から。これは簡単でフォルダ区切り文字 \ を表す。
            次に\\[^\\].+[^\\]\\の部分
            \\   フォルダ区切り文字 \
            [^\\] フォルダ区切り文字じゃない
            .+  任意の文字の1回以上
            [^\\] フォルダ区切り文字じゃない
            \\   フォルダ区切り文字 \

とりあえずうまく動いてるっぽい。.+が問題だけどね。何でもマッチしちゃうから。ちゃんと書くならここをフォルダに使える文字だけに制限する必要がある。まぁ、今回はどんまいw

posted @ 17:15 | Feedback (39)

int id = 2;       //抽出条件


1.標準クエリ演算子のパターン

int total = hogeDataSet.HogeDataTable.AsEnumerable()
        .Where( r => r.Field<int>(hogeDataSet.HogeDataTable.IDColumn == id) )
        .Sum( s => s.Field<int>(hogeDataSet.HogeDataTable.KingakuColumn) );


2.クエリ式のパターン

var drk = from dr in hogeDataSet.HogeDataTable.AsEnumerable()
          where dr.ID == id
          select new
          {
              kin = dr.Field<int>(hogeDataSet.HogeDataTable.KingakuColumn),
              id = dr.Field<int>(hogeDataSet.HogeDataTable.IDColumn)
          } into s
          group s.kin by s.id into grp
          select grp.Sum(_ => _);

int total = drk.FirstOrDefault<int>()

1の標準クエリ演算子を使う方は簡単なんですが、2のクエリ式を使うパターンで悩んだ。
selectもgroupもintoを使わないとそこで終ってしまうので、SQL文のようにselectとgroupを一度に書くことはできないんじゃないかと思う。
よって、SQL文に比べるとかなりやぼったくなるけど、しょうがないのかな・・・

posted @ 11:34 | Feedback (928)