c#怎么用循环查找数组相同元素的次数

c#怎么用循环查找数组相同元素的次数,第1张

你如果一定要用循环来做这个,可以先建立一个字典对象,用来存每个元素和其出现的次数

int[] arr = new int[10] { 8, 7, 8, 7, 9, 1, 2, 3, 4, 5 };

//建立一个字典用来统计相同元素

Dictionary<int, int> lst = new Dictionary<int, int>();

foreach (var obj in arr)

{

if (lstContainsKey(obj))

{

lst[obj]++; //如果已经出现的元素就加次数

}

else{

lstAdd(obj, 1); //没有出现的元素加到字典中

}

}

foreach (var obj in lst)

{

ConsoleWriteLine(objKeyToString() + ":" + objValueToString());

}

其他的方法,你可以lamb来简单代码,其实跟循环差不多,不过少写很多代码。

//数组还是用上面的arr

foreach (var grp in arrGroupBy(c=>c))

{

ConsloeWriteLine(grpKeyToString() + ":" + grpCount()ToString());

}

//导入linq命名空间, 然后distinct一下就可以了 关键代码如下:

using SystemLinq;

//比如,list实例为list

var obj = listDistinct();

//或者麻烦点要根据list的字段xxx过滤就是

var obj_1=from p in list select pxxx distinct();

扩展资料

list()函数与array()类似,只是它可以在一次 *** 作中从一个数组内提取多个值,同时为多个变量赋值。其形式如下:

voidlist(mixed…)

从数据库或文件中提取信息时,这种构造尤其有用。例如,假如你希望格式化并输出从一个文本,文件中读取信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:

Nino Sanzi|profesional golfer|green

可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。

参考资料来源:百度百科:list

public static bool cs()

        {

            DataTable dt = new DataTable();

            var q = from a in dtAsEnumerable()

                    group a by aField<string>("id") into ids

                    select new

                    {

                        a = idsKey,

                        b = ids

                    };

            foreach(var a in q)

            {

                var q2 = from a2 in ab

                         group a2 by a2Field<string>("name") into ids2

                         select new

                         {

                             c = ids2Key,

                             d = ids2

                         };

                foreach(var a3 in q2)

                {

                    if(a3dCount()>1)

                    {

                        return false;

                    }

                }

  

            }

            return true;

        }

参考以上

先按id分组 然后相同id里面 名字相同返回false是吧

using System;

using SystemCollectionsGeneric;

using SystemLinq;

 

namespace ConsoleApplication1

{

    class ItemInfo

    {

        /// <summary>

        /// ItemInfo 类记录数组元素重复次数

        /// </summary>

        /// <param name="value">数组元素值</param>

        public ItemInfo(int value)

        {

            Value = value;

            RepeatNum = 1;

        }

        /// <summary>

        /// 数组元素的值

        /// </summary>

        public int Value { get; set; }

        /// <summary>

        /// 数组元素重复的次数

        /// </summary>

        public int RepeatNum { get; set; } 

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            // 待统计的整型数组

            int[] a = { 1, 1, 1, 3, 1, 2, 2, 1, 3, 4, 2, 1, 5, 3, 4 };

             

            // 集合 dic 用于存放统计结果

            Dictionary<int, ItemInfo> dic = 

                new Dictionary<int, ItemInfo>();

                 

            // 开始统计每个元素重复次数

            foreach (int v in a)

            {

                if (dicContainsKey(v))

                {

                    // 数组元素再次,出现次数增加 1

                    dic[v]RepeatNum += 1;

                }

                else

                {

                    // 数组元素首次出现,向集合中添加一个新项

                    // 注意 ItemInfo类构造函数中,已经将重复

                    // 次数设置为 1

                    dicAdd(v, new ItemInfo(v));

                }

            }

 

            foreach (ItemInfo info in dicValues)

            {

                ConsoleWriteLine("数组元素 {0} 出现的次数为 {1}", 

                    infoValue, infoRepeatNum);

            }

        }

    }

}

public static void cs()

        {

           

            SystemDataDataTable dt = new SystemDataDataTable();

            dtRowsAdd("");

            var quer = from tb in dtAsEnumerable()

                                        group tb by tbField<string>("xx") into x

                                        select new{ 

                                            a=xKey,

                                            b=x

                                        };

            foreach(var c in quer)

            {

                int i = 0;

                foreach(var d in cb)

                {

                    i++;

                }

                if(i>1)

                {

                    //有重复

                }

            }

            for (int i = 0; i < dtRowsCount;i++ )

            {

                var qu = from tb in dtAsEnumerable()

                         where tbField<string>("xx") == dtRows[i]["xx"]ToString()

                         select tb;

                if (quCount() > 1)

                {

                    //有重复

                }

            }

        }

两种方法 看你喜欢哪种

以上就是关于c#怎么用循环查找数组相同元素的次数全部的内容,包括:c#怎么用循环查找数组相同元素的次数、C#中 list<object> 去除重复的数据 求最简单的方法!!、怎么用linq按照id分组查到name有相同时,c#语法返回false等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9690736.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存