Reputation: 11
I want it to be (eg: "2" is occurs 10 time(s)). Can anyone help?
var q = from x in wordlist
group x by x into g
let count = g.Count()
orderby count descending
select new { Word = g.Key, Count = count };
string keyword = "";
foreach (var x in q)
{
List<int> wordcount = new List<int>() { x.Count };
foreach (int value in wordcount.Distinct())
{
System.Diagnostics.Debug.WriteLine("\"{0}\" occurs {1} time(s).", value, wordcount.Count(v => v == value));
}
}
Output:
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"2" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
"1" occurs 1 time(s).
Upvotes: 0
Views: 93
Reputation: 23
I wasn't totally clear on what you were requesting, I answered your "Count Duplicate int in C-Sharp" statement more so than your example.
Is this what you're looking for? There is a boolean for you to change it to show only duplicates (meaning there is more than 1 of a given number in the list) by leaving showAllNumbers as false or setting it to true, because I wasn't sure exactly what you were trying to do.
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<int> numberCount = new List<int>(){52, 52, 15, 32, 52, 7, 9};
bool showAllNumbers = true;
var query = (from x in numberCount.GroupBy(intGroup => intGroup).Select(intGroupInfo => new {intLabel = intGroupInfo.Key, Count = intGroupInfo.Count()}) where (x.Count > 1 || showAllNumbers) select x);
foreach(var groupCount in query)
{
Console.WriteLine(String.Format("\"{0}\" occurs {1} times", groupCount.intLabel, groupCount.Count));
}
}
}
This results in something like this "52" occurs 3 times "15" occurs 1 times "32" occurs 1 times "7" occurs 1 times "9" occurs 1 times
Upvotes: 0
Reputation: 174369
You already have all the info in q
. You should be able to simply print it:
foreach (var x in q)
{
System.Diagnostics.Debug.WriteLine("\"{0}\" occurs {1} time(s).", x.Word, x.Count);
}
Upvotes: 2