是否值得使用Linq重写下面的“字典”结构,以及如何重写?
本文关键字:重写 何重写 结构 字典 Linq 值得 是否 | 更新日期: 2023-09-27 18:06:33
例如,我不知道在任何可能的情况下使用Linq是否是一个好的做法。
Class Aclass : Dictionary<string,int>
{
public Aclass(Aclass myAclass, HashSet<string> blacklist)
{
foreach (var item in myAclass)
{
if ((item.Value > 0) && (!blacklist.Contains(item.Key)))
{
Add(item.Key, item.Value);
}
}
}
}
在我看来,你会很好:
Dictionary<string, int> other = ...;
HashSet<string> blacklist = ...;
var dictionary = other.Where(item => item.Value > 0 &&
!blackList.Contains(item.Key)
.ToDictionary(item => item.Key, item => item.Value);
在我看来根本不需要单独的类型——从Dictionary<,>
或List<>
派生几乎总是一个坏主意。
你可以使用linq:
myAclass.Where(item => item.Value > 0 && !blacklist.Contains(item.Key))
.ToList().ForEach(item => Add(item.Key, item.Value);
您可以这样尝试:
public class Aclass : System.Collections.Generic.Dictionary<string, int>
{
public Aclass(Aclass myAclass, System.Collections.Generic.HashSet<string> blacklist)
{
foreach (var item in myAclass)
{
int iCount = (from itemBlack in blacklist
where itemBlack == item.Key
select itemBlack)
.Count();
if ((item.Value > 0) && (iCount == 0))
{
Add(item.Key, item.Value);
}
}
}
}