我需要一个唯一值列表.但可能是,列表中的值存在两次或更多次.如果发生这种情况,我必须重命名该值,但重命名的值也可以在列表中.
可以使用LINQ查询重命名值,这样我就不需要子查询了吗?
例1: 之前:"one","one","two","two","three" 之后:"one","one_","two","two_","three"
例2: 之前:"one","one","one_" 之后:"one","one_","one__"
第3个"one"有2个下划线,因为第2个"one"被重命名为"one_".
非常感谢你的想法......
Alx*_*ndr 12
我不认为这应该只用简单的linq查询来完成.如果我是你,我会使用HashSet并创建一个函数.像这样的东西:
IEnumerable<String> GetUnique(IEnumerable<String> list) {
HashSet<String> itms = new HashSet<String>();
foreach(string itm in list) {
string itr = itm;
while(itms.Contains(itr)) {
itr = itr + "_";
}
itms.Add(itr);
yield return itr;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以做成扩展方法,所以你可以像这样调用它:( myList.GetUnique();或类似的东西)
修复了更改迭代器变量的错误.
| 归档时间: |
|
| 查看次数: |
2085 次 |
| 最近记录: |