是否值得使用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);
                }
            }
         }
      }

是否值得使用Linq重写下面的“字典”结构,以及如何重写?

在我看来,你会很好:

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