English 中文(简体)
C#重复一项目的次数
原标题:Getting the number of times an item is repeated in C#
  • 时间:2012-01-13 14:39:05
  •  标签:
  • c#
  • linq
  • list

I m从事一项方案,用户必须参与某种扼杀,该方案将储存在清单或阿雷拉,然后计算重复该项目的几倍。

重复最多的三个项目按重复次数的降级顺序显示(1个有10个重复,2个有9个,3个有8个)

它简明扼要。 自2006年以来 我不知道有多少人会参与其中,我使用了名单,然后沿用这个例子:

foreach (string value in list.Distinct())  
{  
    System.Diagnostics.Debug.WriteLine(""{0}" occurs {1} time(s).", value, list.Count(v => v == value));  
}

但出于某种原因,D.D.R.在我的名单上没有出现。 我是否做过错? 这是否与我的C#有关,NOT是C#3.0? 这个例子从未提到过任何增加另一个参考内容或类似之处。

我是否可以采取任何其他方式这样做?

最佳回答

http://www.un.org/Depts/DGACM/index_french.htm 你们需要3.5+。

顺便说一句,你不提。 LINQ是你想要做的事。 你可以很容易地利用其他收集课程和算术,取得结果。

// Create a dictionary to hold key-value pairs of words and counts
IDictionary<string, int> counts = new Dictionary<string, int>();

// Iterate over each word in your list
foreach (string value in list)
{
    // Add the word as a key if it s not already in the dictionary, and
    // initialize the count for that word to 1, otherwise just increment
    // the count for an existing word
    if (!counts.ContainsKey(value))
        counts.Add(value, 1);
    else
        counts[value]++; 
}

// Loop through the dictionary results to print the results
foreach (string value in counts.Keys)
{
    System.Diagnostics.Debug
        .WriteLine(""{0}" occurs {1} time(s).", value, counts[value]);
}
问题回答

如果你没有C#3.0,那么你没有推广方法。

如果你没有的话。 NET3.5 那么,你没有将林克延伸方法称作静态。

您可以补充一下你自己的功能:

public static IEnumerable<T> Distinct(IEnumerable<T> src, IEqualityComparer<T> eCmp)
{
  Dictionary<T, bool> fakeHashSet = new Dictionary<T, bool>(eCmp);
  //When I coded for 2.0 I had my own custom HashSet<T>, but that s overkill here
  bool dummy;
  foreach(T item in src)
  {
    if(!fakeHashSet.TryGetValue(item, out dummy))
    {
      fakeHashSet.Add(item, true);
      yield return item;
    }
  }
}
public static IEnumerable<T> Distinct(IEnumerable<T> src)
{
  return Distinct(src, EqualityComparer<T>.Default);
}
public delegate TResult Func<T, TResult>(T arg);//we don t even have this :(
public static int Count(IEnumerable<T> src, Func<T, bool> predicate)
{
  int c = 0;
  foreach(T item in src)
    if(predicate(item))
      ++c;
  return c;
}

由于我们没有延期大会,或者说我们不得不这样说:

foreach (string value in Distinct(list))  
{  
    System.Diagnostics.Debug.WriteLine(""{0}" occurs {1} time(s).", value, Count(list, delegate(string v){return v == value;}));  
}

总而言之,我们能够用C#2.0来执行大部分林克到目标,我们当中许多人这样做了,但距离友好程度一样远,当然我们可以向其他问答者提供地图。

In this case though, you d be faster just doing the count directly:

Dictonary<string, int> counts = new Dictionary<string, int>();
foreach(string value in list)
{
  if(counts.ContainsKey(value))
    counts[value]++;
  else
    counts[value] = 1;
}
foreach(KeyValuePair<string, int> kvp in counts)
  System.Diagnostics.Debug.WriteLine(""{0}" occurs {1} time(s).", kvp.Key, kvp.Value));

哪一个版本。 该网络框架是你们使用的吗? 包括这种方法在内的最低框架版本为:NET3.5。

如果你重新使用“网络”第35条或之后,你是否建立了“网络”系统。 L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L. 否则,这可能就是该方法似乎无法使用的原因。 http://mdn.micro f.com/en-us/library/b299412. asx” tral = “noestod” 。 千分之四 用户名

您必须至少使用C#3.0和NET 3.5,并记住增加<代码>使用系统:Linq;。

和你现有的解决办法一样,你将需要。 NET 3.5或以上用于工作,但在此,这是任何方面;

var query = list.GroupBy(x => x).OrderByDescending(x => x.Count()).Take(3);

foreach (var result in query)
{
    Console.WriteLine(""{0}" occurs {1} time(s).", result.Key, result.Count());
}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...