按字符串字段筛选集合

本文关键字:集合 筛选 字段 字符串 | 更新日期: 2023-09-27 17:58:47

我有以下类

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)
{
}

按字符串字段筛选集合

如果我得到了你真正想要的,我会尝试这样的方法:警告:很脏,没有经过测试,但我认为这会对你有所帮助。

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;
}