我的问题: 我有一个列表,我想按sortname排序。这非常有效。但是我在开始时有特殊字符的类型名称。我能做什么才能观察到符号?
带符号的sortname示例:(替代)Commerce Bank
我的分类功能:
cmembers.Sort(delegate (ChamberMembers x, ChamberMembers y)
{
if (x.companysortName == null && y.companysortName == null) return 0;
else if (x.companysortName == null) return -1;
else if (y.companysortName == null) return 1;
else return x.companysortName.CompareTo(y.companysortName);
});
不得删除符号!
答案 0 :(得分:2)
使用正则表达式和LINQ进行排序。您只需要两行代码
{{1}}
完整的代码示例
{{1}}
答案 1 :(得分:1)
在比较之前清理它。
cmembers.Sort(delegate (ChamberMembers x, ChamberMembers y)
{
if (x.companysortName == null && y.companysortName == null) return 0;
else if (x.companysortName == null) return -1;
else if (y.companysortName == null) return 1;
else return FilterSpecialChars(x.companysortName).CompareTo(FilterSpecialChars(y.companysortName));
});
public static string FilterSpecialChars(string str)
{
return ...;
}
答案 2 :(得分:1)
如果我理解你的问题,这就是一个例子:
static void Main(string[] args)
{
List<ChamberMembers> lst = new List<ChamberMembers>();
lst.Add(new ChamberMembers
{
companysortName = "b"
});
lst.Add(new ChamberMembers
{
companysortName = "z"
});
lst.Add(new ChamberMembers
{
companysortName = "e"
});
lst.Add(new ChamberMembers
{
companysortName = "a"
});
Console.WriteLine("\nBefore sort:");
foreach (ChamberMembers ChamberMember in lst)
{
Console.WriteLine(ChamberMember.companysortName);
}
lst.Sort();
Console.WriteLine("\nAfter sort:");
foreach (ChamberMembers ChamberMember in lst)
{
Console.WriteLine(ChamberMember.companysortName);
}
Console.ReadLine();
}
}
public class ChamberMembers : IComparable<ChamberMembers>
{
public string companysortName { get; set; }
public int CompareTo(ChamberMembers Chamber)
{
if (Chamber == null)
return 1;
else
return string.Compare(this.companysortName, Chamber.companysortName, CultureInfo.InvariantCulture, CompareOptions.IgnoreSymbols);
}
}