按字符串字段过滤集合

时间:2014-04-17 06:09:47

标签: c# linq

我有以下课程

public class Code
{
    public string Code {get;set;}
}

例如,集合包含以下内容:

01110
01111
01112
10110
20010
20011

代码有掩码:前4个符号类似于ID,第5个符号是扩展名。如果集合包含多个具有相同ID的元素,则删除以零结尾的元素。
例如,上面的结果是:

01111
01112
10110
20011

private List<Code> FilterCode(IEnumerable<Code> codes)
{
}

1 个答案:

答案 0 :(得分:1)

如果我得到你真正想要的东西,我会尝试这样的事情: 警告:肮脏而未经测试但我认为这会对您有所帮助。

public class Code
{
    public string Id { get;set; }
    public string Extension { get;set; }
    public string CodeStr { get; set; }

    public Code(string code)
    {
        CodeStr = code;
        Id = code.Remove(code.Length - 1);
        Extension = code.Substring(code.Length - 1);
    }
}

private List<Code> CodeList(IEnumerable<string> codes)
{
    var result = new List<Code>();
    foreach(string str in codes)
    {
        var code = new Code(str);

        if (result.Exists(x => x.Id == code.Id))
        {
            var items = result.Where(x => x.Id == code.Id && x.Extension == "0").ToList() ;
            foreach (var item in items)
            {
                result.Remove(item);
            }

            if (code.Extension != "0")
                result.Add(code);
        }
        else
        {
            result.Add(code);
        }
    }

    return result;
}
相关问题