C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C# ver2.0 3.0 IEnumerableとvar


(過去ログ 100 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■59531 / inTopicNo.1)  C# ver2.0 3.0 IEnumerableとvar
  
□投稿者/ ラムダ (1回)-(2011/05/30(Mon) 20:42:57)

分類:[C#] 

2011/05/30(Mon) 20:47:45 編集(投稿者)
Visual Studio 2005で下記の処理を実行したいのです。
ですが、2008でしかvarが使用できないみたいでvar以降の部分をどう記述していいのかわかりません。

        private void SendMessage(int ID, string Message)
        {
            statusStrip1.Items[0].Text = "ハチ#" + ID + ": " + Message;
            var beeGroups =
              from bee in world.Bees
              group bee by bee.CurrentState into beeGroup
              orderby beeGroup.Key
              select beeGroup;
            listBox1.Items.Clear();
            foreach (var group in beeGroups)
            {
                string s;
                if (group.Count() == 1)
                    s = "";
                else
                    s = "s";
                listBox1.Items.Add(group.Key.ToString() + ": "
                                 + "ハチ" + group.Count() + "匹"/* + s */);
                if (group.Key == BeeState.待機中
                 && group.Count() == world.Bees.Count()
                 && framesRun > 0)
                {
                    listBox1.Items.Add("シミュレーション終了: すべてのハチは待機中です。");
                    toolStrip1.Items[0].Text = "シミュレーション終了";
                    statusStrip1.Items[0].Text = "シミュレーション終了";
                    timer1.Enabled = false;
                }
            }
        }

引用返信 編集キー/
■59532 / inTopicNo.2)  Re[1]: C# ver2.0 3.0 IEnumerableとvar
□投稿者/ 魔界の仮面弁士 (2184回)-(2011/05/30(Mon) 21:34:30)
No59531 (ラムダ さん) に返信
> ですが、2008でしかvarが使用できないみたいで
var もそうですが、そもそも、from/group/orderby/select による抽出作業(Linq)が使えません。


> var以降の部分をどう記述していいのかわかりません。
強いて言えば、こんな感じでは無いですかね。(未検証)


int allCount = 0;
Dictionary<BeeState, int> beeGroups = new Dictionary<BeeState, int>();
foreach (Bee bee in world.Bees)  // bee の型が分からないので、仮に Bee としています
{
    allCount++;
    if (!beeGroups.ContainsKey(bee.CurrentState)) beeGroups.Add(bee.CurrentState, 0);
    beeGroups[bee.CurrentState]++;
}

foreach (KeyValuePair<BeeState, int> group in beeGroups)
{
    string s;
    if (group.Value == 1)
        s = "";
    else
        s = "s";
    listBox1.Items.Add(group.Key.ToString() + ": " + "ハチ" + group.Value + "匹"/* + s */);

    if (group.Key == BeeState.待機中
     && group.Value == allCount
     && framesRun > 0)
    {
        listBox1.Items.Add("シミュレーション終了: すべてのハチは待機中です。");
        toolStrip1.Items[0].Text = "シミュレーション終了";
        statusStrip1.Items[0].Text = "シミュレーション終了";
        timer1.Enabled = false;
    }
}

引用返信 編集キー/
■59534 / inTopicNo.3)  Re[2]: C# ver2.0 3.0 IEnumerableとvar
□投稿者/ 魔界の仮面弁士 (2185回)-(2011/05/30(Mon) 21:48:38)
No59532 (魔界の仮面弁士 ) に追記
>>var以降の部分をどう記述していいのかわかりません。
> 強いて言えば、こんな感じでは無いですかね。(未検証)

あっと。orderby も指定されているんでしたっけか。

だとしたら、
 Dictionary<BeeState, int> beeGroups = new Dictionary<BeeState, int>();
ではなく、
 SortedDictionary<BeeState, int> beeGroups = new SortedDictionary<BeeState, int>();
にした方が良いかも。
引用返信 編集キー/
■59536 / inTopicNo.4)  Re[3]: C# ver2.0 3.0 IEnumerableとvar
□投稿者/ ラムダ (2回)-(2011/05/30(Mon) 23:16:07)
2011/05/30(Mon) 23:16:28 編集(投稿者)

No59534 (魔界の仮面弁士 さん) に返信

ためして見たら動きました!!!
分析してみます><
ありがとうございました!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -