我自己写的测试代码
            string shijianjilv = "■";
            string shijianjilvB = "□";
            string aa = "aaa";
            string bb = "bbb";
            string cc = "ccc";
            string dd = "ddd";
            string ee = "eee";
            string[] str1 = { aa, bb, cc, dd, ee };
            string[] str2 = { "aaa", "ccc" };            foreach (string sb in str2)
            {
                if (aa == sb)
                {
                    aa = aa + shijianjilv;
                }
                else if (bb == sb)
                {                    bb = bb + shijianjilv;
                }
                else if (cc == sb)
                {
                    cc = cc + shijianjilv;
                }
                else if (dd == sb)
                {
                    dd = dd + shijianjilv;
                }
                else if (ee == sb)
                {
                    ee = ee + shijianjilv;
                }
            }
            Response.Write(aa + "<br/>" + bb + "<br/>" + cc + "<br/>" + dd + "<br/>" + ee + "<br/>");输出结果是:
  aa=aaa ■
  bb=bbb
  cc=ccc ■
  dd=ddd
  ee=eee
  本人太菜了,这是我自己写了一段代码,怎么判断让结果等于
aa=aaa ■
bb=bbb □
cc=ccc ■
dd=ddd □
ee=eee □可要是变量有1000个或更多用这种方法就不行了。。
怎么写段就算有1000个变量也可以高效执行的代码啊。。

解决方案 »

  1.   

                string shijianjilv = "■";
                string shijianjilvB = "□";
                string aa = "aaa";
                string bb = "bbb";
                string cc = "ccc";
                string dd = "ddd";
                string ee = "eee";
                string[] str1 = { aa, bb, cc, dd, ee };
                string[] str2 = { "aaa", "ccc" };            str1 = str1.Select(x => str2.Where(y => x == y).Count > 0 ? x + " ■" : x + " □").ToArray();
      

  2.   

    大哥  这是啥写法啊? LINQ??
      

  3.   

    我最后要得到变量aa,bb,cc,dd,ee的值啊
      

  4.   

    如果变量中有值等于数组str2中的元素
    ,则变量值再后面加上■,如果不等于加上□
      

  5.   


    void Main()
    {
       string shijianjilv = "■";
    string shijianjilvB = "□";
    string aa = "aaa";
    string bb = "bbb";
    string cc = "ccc";
    string dd = "ddd";
    string ee = "eee";
    string[] str1 = { aa, bb, cc, dd, ee };
    string[] str2 = { "aaa", "ccc" };       var query=from s1 in str1
                 join s2 in str2
     on s1 equals s2 into temp
     from s in temp.DefaultIfEmpty()
                 select new 
     {
    s1,
    flag=s==null?shijianjilvB:shijianjilv
     };
    query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}",q.s1,q.flag));

    /*
    aaa ■
    bbb □
    ccc ■
    ddd □
    eee □ 
    */
    }
      

  6.   

    不用linq也可以:            for (int i = 0; i < str1.Length; i++)
                {
                    str1[i] += Array.IndexOf(str2, str1[i]) > -1 ? shijianjilv : shijianjilvB;
                }
                Response.Write(string.Join("<br />", str1));
      

  7.   

    Dictionary<string, string> str1 = new Dictionary<string, string>()
    {
        { "aa", "aaa" },
        { "bb", "bbb" }, 
        { "cc", "ccc" },
        { "dd", "ddd" }, 
        { "ee","eee" }
    };
    string[] str2 = { "aaa", "ccc" };str1 = str1.Select(x => new {Key = x.Key, Value = str2.Contains(x.Value) ? x + " ■" : x + " □" }).ToDictionary(x => x.Key, y => y.Value);
      

  8.   

                Dictionary<string, string> str1 = new Dictionary<string, string>()
                {
                    { "aa", "aaa" },
                    { "bb", "bbb" }, 
                    { "cc", "ccc" },
                    { "dd", "ddd" }, 
                    { "ee","eee" }
                };
                string[] str2 = { "aaa", "ccc" };            str1 = str1.Select(x => new { Key = x.Key, Value = str2.Contains(x.Value) ? x.Value + " ■" : x.Value + " □" }).ToDictionary(x => x.Key, y => y.Value);
                string s = "";
                str1.ToList().ForEach(x => { s += x.Key + "=" + x.Value + "<br />\r\n"; });
                Response.WriteLine(s);
    aa=aaa ■<br />
    bb=bbb □<br />
    cc=ccc ■<br />
    dd=ddd □<br />
    ee=eee □<br />
      

  9.   

    哥哥们啊,我是跑来网吧查CSDN的啊,在这也没编程工具,。。
      

  10.   

    我要单独用变量aa或bb怎么取啊,你们写的好像都是循环读出了。。
    我太菜了,。555
      

  11.   

    #10的代码我运行过,C# 2010测试通过。Response.WriteLine(s);修改成
    Response.Write(s);
      

  12.   


    用字典保存变量名吧。http://topic.csdn.net/u/20110530/19/035239d0-7f11-41da-a6dd-aa6fff4497db.html你看你把加菲猫难住了。
      

  13.   

    -_-!!!我这样写实要替换word文档里标签值的啊,非得单独取得各个变量的值才行啊。哥哥帮帮我,搞一天也没解决,分我给你加啊。。
      

  14.   

    word标签不是string吧?你在代码里也不可能写1000个word标签的局部变量吧?
    你可以把word标签放到数组里,而不是把标签里的字符串放数组里
      

  15.   

                string aa = "aaa";
                string bb = "bbb";
                string cc = "ccc";
                string dd = "ddd";
                string ee = "eee";
                Dictionary<string, string> str1 = new Dictionary<string, string>()
                {
                    { "aa", aa },
                    { "bb", bb }, 
                    { "cc", cc },
                    { "dd", dd }, 
                    { "ee", ee }
                };
                string[] str2 = { "aaa", "ccc" };            str1 = str1.Select(x => new { Key = x.Key, Value = str2.Contains(x.Value) ? x.Value + " ■" : x.Value + " □" }).ToDictionary(x => x.Key, y => y.Value);
                aa = str1["aa"];
                bb = str1["bb"];
                cc = str1["cc"];
                dd = str1["dd"];
                ee = str1["ee"];
                Response.Write(aa + "<br/>" + bb + "<br/>" + cc + "<br/>" + dd + "<br/>" + ee + "<br/>");看看这个你满意么?