当前位置:编程学习 > C#/ASP.NET >>

请教一个数据筛选的问题

目前有一组随机数,如下
123,124,125,136,178
245,256,267,278,297
345,356,376,389,391

设置一文本框,其中内容自己输入,比如手动输入1,即在上组数中筛选出包含1的数,显示结果如下:
123,124,125,136,178,391

现需完成的功能是任意输入4位数,比如1234,分别输出只包含任意一个数字的,只包含任意2个数字的,只包含任意3个数字的,比如只包含任意1个数字的就是分别包含1、2、3、4的数据筛选组合的并集,只包含任意2个数字的就是分别包含12、13、14、23、24、34数据的筛选组合的并集,以此类推。
文本框中的四位数字是任意手动输入的,给出的随机数也是随机给的。

目前本人只会包含文本框任意数字及组合的显示方法,如下
Func<string,bool>Filter1=x.Any(y=>data.Contains(y));

请教高手帮忙,拜谢! --------------------编程问答-------------------- --------------------编程问答--------------------

            List<string> data = new List<string>() { "123", "124", "125", "136", "178", "245", "256", "267", "278", "297", "345", "356", "376", "389", "391" };
            string str = "1234";

            //只包含任意1位
            List<string> result1 = data.Where(c => c.ToArray().Intersect(str.ToArray()).Count() == 1).ToList();

            //只包含任意2位
            List<string> result2 = data.Where(c => c.ToArray().Intersect(str.ToArray()).Count() == 2).ToList();

            //只包含任意3位
            List<string> result3 = data.Where(c => c.ToArray().Intersect(str.ToArray()).Count() == 3).ToList();

            result1.ForEach(x => Console.Write(x + " "));
            Console.WriteLine();

            result2.ForEach(x => Console.Write(x + " "));
            Console.WriteLine();

            result3.ForEach(x => Console.Write(x + " "));
            Console.WriteLine();
--------------------编程问答-------------------- 效果如下图所示:
--------------------编程问答-------------------- 学习学习下
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,