首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

二维数组查询方法

2012-11-10 
求一个二维数组查询方法已知一个数组:C# code{{1,aaa},{1,bbb},{2,ccc},{2,ddd},{3,uu

求一个二维数组查询方法
已知一个数组:

C# code
{{"1","aaa"},{"1","bbb"},{"2","ccc"},{"2","ddd"},{"3","uuu"},{"1","eee"},{"4","aaa"},{"4","qqq"}}

想要得到如下效果:
1、查询出第一列相同的第二列值
2、在查出的第二列结果中如果有相同的值,则再次合并
3、如果第一列值只有一行,则忽略(例如:{"3","uuu"})

即得到的结果应该是:
aaa,bbb,eee,qqq

ccc,ddd

[解决办法]
C# code
        string[,] values = { { "1", "aaa" }, { "1", "bbb" }, { "2", "ccc" }, { "2", "ddd" }, { "3", "uuu" }, { "1", "eee" }, { "4", "aaa" }, { "4", "qqq" } };        SortedList<string, string> sortedList = new SortedList<string, string>();        for (int i = 0; i < values.GetLength(0); i++)        {            if (sortedList.ContainsKey(values[i, 0]))                sortedList[values[i, 0]] += "," + values[i, 1];            else                sortedList.Add(values[i, 0], values[i, 1]);        }        for (int i = 0; i < sortedList.Count; i++)            if (!sortedList[sortedList.Keys[i]].Contains(','))                sortedList.RemoveAt(i--);        if (sortedList.Count > 1)        {            for (int i = 0; i < sortedList.Count; i++)            {                for (int j = i + 1; j < sortedList.Count; j++)                {                    string[] values1 = sortedList[sortedList.Keys[i]].Split(',');                    string[] values2 = sortedList[sortedList.Keys[j]].Split(',');                    if (values1.Intersect(values2).Count() > 0)                    {                        sortedList[sortedList.Keys[i]] = string.Join(",", values1.Union(values2).ToArray());                        sortedList.RemoveAt(j--);                    }                }            }        }        foreach (KeyValuePair<string, string> pair in sortedList)            Console.WriteLine(pair.Value);
[解决办法]
C# code
namespace SumString{    class Program    {       static string[,] str = new string[,] { { "1", "aaa" }, { "1", "bbb" }, { "2", "ccc" }, { "2", "ddd" },                                                 { "3", "uuu" }, { "1", "eee" }, { "4", "aaa" }, { "4", "qqq" } };       static List<string[,]> list = new List<string[,]>();       static List<string> listid = new List<string>();                static void Main(string[] args)        {            Addlist();            foreach (string[,] str in list)            {                if (!listid.Contains(str[0, 0]))                {                    if(SumString(str).TrimEnd(new char[]{','}).Contains(","))                    Console.WriteLine("{0}--{1}", str[0, 0], SumString(str).TrimEnd(new char[]{','}));                }                listid.Add(str[0,0]);                                          }            Console.ReadKey();                    }         public static string SumString(string [,] para)        {            string str="";            foreach (string[,] s in list)            {                if (s[0, 0] == para[0,0])                {                    str += s[0, 1] + ",";                }            }            return str;        }        public static void Addlist( )        {            string[,] tempstr = new string[1, 2];            for (int i = 0; i < str.GetLength(0); i++)            {                tempstr = new string[1, 2];                for (int j = 0; j < str.GetLength(1); j++)                {                    if(j==0)                    tempstr[0, 0] = str[i, j];                    else                    tempstr[0, 1] = str[i, j];                                  }                list.Add(tempstr);            }        }    }} 

热点排行