请教一个数据筛选的问题
目前有一组随机数,如下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