C#过滤列表 - 多个条件

时间:2013-07-22 10:59:44

标签: c# string list optimization filter

我有一个名为melter的自定义数据类型列表。

有关过滤器的熔化器中的两件事是:

  • 删除
  • 说明

我得到/声明我的列表:

            // Return all the melters
        var melterslist = ServiceManager.ListStandingDataValues(StandingDataType.melters);

        var meltersActive = new List<IMelters>();

        foreach (var m in melterslist)
        {
            if (m.Deleted == false && m.desc.ToUpper().Contains(input))
            {
                meltersActive.Add(m);
            }
        }

        var json = new { MelterNames = new List<object>() };

        foreach (var m in meltersActive)
        {
            json.meltersNames.Add(
                    new
                    {
                        Name = m.Description,
                        Value = m.Id
                    }
                );
        }

        return json;

但是我觉得做到鞋帮和包含会花费我很多处理时间,因为列表大小是&gt; 1000。

然后每次我认为它也会将其转换为JSON。

JSON可以在jQuery自动完成字段中使用3/4次。

有人可以推荐更好的方法吗,即LINQ查询?

由于

1 个答案:

答案 0 :(得分:1)

在LINQ中,您可以通过以下方式实现此目的:

meltersActive = (from melter in melterslist
                 where m.Deleted && m.desc.IndexOf(input, StringComparison.InvariantCultureIgnoreCase) != -1
                 select new
                 {
                     Name = m.Description,
                     Value = m.Id
                 });

对于第二个条件(不区分大小写Contains),请查看Case insensitive 'Contains(string)'Microsoft Connect