说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

这一小段代码看能不能帮我简化一下.

编辑:说三道四文库 发布时间:2018-07-18 09:20
HTML文档下载 WORD文档下载 PDF文档下载
C#中对List<T>进行搜索,并可输入多个关键字按空格分开的方法


public List<RoomEntity> SearchDisply(string searchName) //传过来的搜索词,得到结果List<RoomEntity>
        {
            string[] ArraySearch = searchName.Split(' ');
            List<RoomEntity> sList = new List<RoomEntity>();
            sList.Clear();
            foreach (RoomEntity var in GetRoomList())
            {
                for (int i = 0; i < ArraySearch.Length; i++)
                {
                    if (ArraySearch[i] != "")
                    {
                        if ((var.Number.IndexOf(ArraySearch[i]) != -1) && Validate(var.RoomId,sList))
                        {
                            sList.Add(var);
                        }
                    }
                }
            }

            return sList;
        }
        private bool Validate(int id, List<RoomEntity> lt)
        {
            bool result = true;
            foreach (RoomEntity var in lt)
            {
                if (id == var.RoomId)
                {
                    result = false;
                }
            }
            return result;
        }
public List <RoomEntity> SearchDisply(string searchName) //传过来的搜索词,得到结果List <RoomEntity>
        {
            string[] ArraySearch = searchName.Split(new char[] {' '},StringSplitOptions.RemoveEmptyEntries); 
            List <RoomEntity> sList = new List <RoomEntity>();
            sList.Clear();//这句楼主可以去掉
            foreach (RoomEntity var in GetRoomList())
            {
                for (int i = 0; i < ArraySearch.Length; i++)
                {//减少一次if判断
                    if ((var.Number.IndexOf(ArraySearch[i]) != -1) && Validate(var.RoomId,sList))
                    {
                        sList.Add(var);
                    }
                }
            }

            return sList;
        }
        private bool Validate(int id, List <RoomEntity> lt)
        {
            bool result = true;
            foreach (RoomEntity var in lt)
            {
                if (id == var.RoomId)
                {
                    result = false;
                }
            }
            return result;
        }
关键这句:

string[] ArraySearch = searchName.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries); 
我没有看你的代码,我只是对你的题目问一下:你简化的目的是什么呢?

如果这段运行很好,大多数时候不必动它。

.net framework中有许多一看就是大学生写的代码,我相信微软有很好的 pm,所以那些低级代码很好地运行时,许多时候就无需重构它。
 if ((var.Number.Contains(ArraySearch[i])) && Validate(var.RoomId,sList)) 
                        { 
                            sList.Add(var); 
                        } 
楼上是高人。。。
一般没有涉及大数据的话,没有必要考虑太多,做出来就是硬道理。。。
把什么都弄在一行来写,可读性差了,个人意见。。。
引用 3 楼 sp1234 的回复:
我没有看你的代码,我只是对你的题目问一下:你简化的目的是什么呢?

如果这段运行很好,大多数时候不必动它。

.net framework中有许多一看就是大学生写的代码,我相信微软有很好的 pm,所以那些低级代码很好地运行时,许多时候就无需重构它。


大哥,我现在也只是在学习阶段,之所以请大家帮忙简化,只是想得到一个上佳的解决方案啦...
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘