页面是四个多选按钮,传到后台的是布尔值,后台根据四个布尔值进行筛选LIst对象,的然后将其筛选的数据填充到另一个list对象返回给页面,我自己写的太复杂了,请大家帮我看看有什么别的方法没有,谢谢!  public List<SysDisk> DeserializeList(bool Ready, bool Failed, bool Online, bool Other)
    {
        string path = OutFile + @"\Disk.bin";
        IFormatter formatter = new BinaryFormatter();
        FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        fs.Seek(0, 0);
        infoList = formatter.Deserialize(fs) as List<SysDisk>;//拿到数据的list        List<SysDisk> DiskList = new List<SysDisk>();//填充筛选数据的list
        foreach (SysDisk item in infoList)
        {
            SysDisk disk = new SysDisk();
            if (Ready == true && Failed == true && Online == true && Other == true)
            {
                disk.IP = item.IP;
                disk.diskno = item.diskno;
                disk.diskname = item.diskname;
                disk.diskstates = item.diskstates;
                disk.diskSerial = item.diskSerial;
                disk.SpareState = item.SpareState;
                disk.RollUpStatus = item.RollUpStatus;
                disk.ComponentStatus = item.ComponentStatus;
                disk.UpdateTime = item.UpdateTime;
                DiskList.Add(disk);
            }
            else if (Ready == true && Failed == true)
            {
                if (item.diskstates == "Ready" || item.diskstates == "Failed")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Ready == true && Online == true)
            {
                if (item.diskstates == "Ready" || item.diskstates == "Online")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Ready == true && Other == true)
            {
                if (item.diskstates == "Ready" || item.diskstates == "Other")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Failed == true && Ready == true)
            {
                if (item.diskstates == "Failed" || item.diskstates == "Ready")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Failed == true && Online == true)
            {
                if (item.diskstates == "Failed" || item.diskstates == "Online")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Failed == true || Other == true)
            {
                if (item.diskstates == "Failed" && item.diskstates == "Online")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Online == true || Other == true)
            {
                if (item.diskstates == "Online" && item.diskstates == "Other")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Online == true || Failed == true)
            {
                if (item.diskstates == "Online" && item.diskstates == "Failed")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Online == true || Ready == true)
            {
                if (item.diskstates == "Online" && item.diskstates == "Ready")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Ready == true)
            {
                if (item.diskstates == "Ready")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Failed == true)
            {
                if (item.diskstates == "Failed")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
            else if (Online == true)
            {
                if (item.diskstates == "Online")
                {
                    disk.IP = item.IP;
                    disk.diskno = item.diskno;
                    disk.diskname = item.diskname;
                    disk.diskstates = item.diskstates;
                    disk.diskSerial = item.diskSerial;
                    disk.SpareState = item.SpareState;
                    disk.RollUpStatus = item.RollUpStatus;
                    disk.ComponentStatus = item.ComponentStatus;
                    disk.UpdateTime = item.UpdateTime;
                    DiskList.Add(disk);
                }
            }
        }
        return DiskList;
    }
C#asp.net对象String

解决方案 »

  1.   


    建议根据item.diskstates,结合Ready,Failed,Online,Other参数的取值判断是否需要加入到新列表
    foreach
    {
    switch()
    {
    case:
      if() //不符合要求
      continue;
     ...
    }
    //不需要 disk.IP = item.IP等操作,结构一样的
    DiskList.Add(item)
    }
      

  2.   


    建议使用穷举switch结构,赋值封装成一个方法。
      

  3.   


    我帮你改了下,有些赛选条件不可能进去的我把它去掉了。
    public List<SysDisk> DeserializeList(bool Ready, bool Failed, bool Online, bool Other)
            {
                string path = OutFile + @"\Disk.bin";
                IFormatter formatter = new BinaryFormatter();
                FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                fs.Seek(0, 0);
                infoList = formatter.Deserialize(fs) as List<SysDisk>;//拿到数据的list            List<SysDisk> DiskList = new List<SysDisk>();//填充筛选数据的list            foreach (SysDisk item in infoList)
                {
                    switch (item.diskstates)
                    {
                        case "Ready":
                            if (Ready && Failed && Online && Other)
                            {
                                DiskList.Add(item);
                            }
                            else if (Ready || (Ready && (Failed || Online || Other)))
                            {
                                DiskList.Add(item);
                            }
                            else
                            { }
                            break;
                        case "Failed":
                            if (Ready && Failed && Online && Other)
                            {
                                DiskList.Add(item);
                            }
                            else if (Failed || ((Ready || Online) && Failed))
                            {
                                DiskList.Add(item);
                            }
                            else
                            { }
                            break;
                        case "Online":
                            if (Ready && Failed && Online && Other)
                            {
                                DiskList.Add(item);
                            }
                            else if (Online || ((Ready || Failed) && Online))
                            {
                                DiskList.Add(item);
                            }
                            else
                            { }
                            break;
                        case "Other":
                            if (Ready && Failed && Online && Other)
                            {
                                DiskList.Add(item);
                            }
                            else if (Ready && Other)
                            {
                                DiskList.Add(item);
                            }
                            else
                            { }                        break;
                        default:
                            break;
                    }
                }
                return DiskList;
            }
      

  4.   

    Quote: 引用 4 楼 lihui398 的回复:

    建议使用穷举switch结构,赋值封装成一个方法。这里没注意看,说声Sorry哈,使用穷举switch结构,不需要赋值直接添加就行了,因为你两个泛型集合的类型都一样。