# C# Eval Expression LINQ Dynamic - Count

## LINQ Dynamic Count Examples

C# Dynamic LINQ Count examples using an Expression Evaluator.

## Count - Simple

This C# example uses the LINQ Count method with a dynamic expression to get the number of unique factors of 300.

### LINQ

```int[] factorsOf300 = {2, 2, 3, 5, 5};

var uniqueFactors = factorsOf300.Distinct().Count();

Console.WriteLine("There are {0} unique factors of 300.", uniqueFactors);
```

Try it online

### LINQ Execute

```int[] factorsOf300 = {2, 2, 3, 5, 5};

var uniqueFactors = factorsOf300.Distinct().Execute<int>("Count()");

Console.WriteLine("There are {0} unique factors of 300.", uniqueFactors);
```

Try it online

### Result

``````There are 3 unique factors of 300.
``````

## Count - Conditional

This C# example uses the LINQ Count method with a dynamic expression to get the number of odd ints in the array.

### LINQ

```int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

var oddNumbers = numbers.Count(n => n % 2 == 1);

Console.WriteLine("There are {0} odd numbers in the list.", oddNumbers);
```

Try it online

### LINQ Dynamic

```int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

var oddNumbers = numbers.Count(n => "n % 2 == 1");

Console.WriteLine("There are {0} odd numbers in the list.", oddNumbers);
```

Try it online

### LINQ Execute

```int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

var oddNumbers = numbers.Execute<int>("Count(n => n % 2 == 1)");

Console.WriteLine("There are {0} odd numbers in the list.", oddNumbers);
```

Try it online

### Result

``````There are 5 odd numbers in the list.
``````

## Count - Nested

This C# example uses the LINQ Count method with a dynamic expression to return a list of customers and how many orders each has.

### LINQ

```private void uiCount_Nested_LINQ_Click(object sender, EventArgs e)
{
var customers = My.GetCustomerList();

var orderCounts = customers.Select(c => new {c.CustomerID, OrderCount = c.Orders.Count()});

var sb = new StringBuilder();

My.ObjectDumper.Write(sb, orderCounts);

My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}
```

### LINQ Execute

```private void uiCount_Nested_LINQ_Execute_Click(object sender, EventArgs e)
{
var customers = My.GetCustomerList();

var orderCounts = customers.Execute("Select(c => new { c.CustomerID, OrderCount = c.Orders.Count() })");

var sb = new StringBuilder();

My.ObjectDumper.Write(sb, orderCounts);

My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}
```

### Result

``````CustomerID=ALFKI
CustomerID=ANATR
CustomerID=ANTON
CustomerID=AROUT
CustomerID=BERGS
CustomerID=BLAUS
CustomerID=BLONP
CustomerID=BOLID
CustomerID=BONAP
CustomerID=BOTTM
CustomerID=BSBEV
CustomerID=CACTU
CustomerID=CENTC
CustomerID=CHOPS
CustomerID=COMMI
CustomerID=CONSH
CustomerID=DRACD
CustomerID=DUMON
CustomerID=EASTC
CustomerID=ERNSH
CustomerID=FAMIA
CustomerID=FISSA
CustomerID=FOLIG
CustomerID=FOLKO
CustomerID=FRANK
CustomerID=FRANR
CustomerID=FRANS
CustomerID=FURIB
CustomerID=GALED
CustomerID=GODOS
CustomerID=GOURL
CustomerID=GREAL
CustomerID=GROSR
CustomerID=HANAR
CustomerID=HILAA
CustomerID=HUNGC
CustomerID=HUNGO
CustomerID=ISLAT
CustomerID=KOENE
CustomerID=LACOR
CustomerID=LAMAI
CustomerID=LAUGB
CustomerID=LAZYK
CustomerID=LEHMS
CustomerID=LETSS
CustomerID=LILAS
CustomerID=LINOD
CustomerID=LONEP
CustomerID=MAGAA
CustomerID=MAISD
CustomerID=MEREP
CustomerID=MORGK
CustomerID=NORTS
CustomerID=OCEAN
CustomerID=OLDWO
CustomerID=OTTIK
CustomerID=PARIS
CustomerID=PERIC
CustomerID=PICCO
CustomerID=PRINI
CustomerID=QUEDE
CustomerID=QUEEN
CustomerID=QUICK
CustomerID=RANCH
CustomerID=RATTC
CustomerID=REGGC
CustomerID=RICAR
CustomerID=RICSU
CustomerID=ROMEY
CustomerID=SANTG
CustomerID=SAVEA
CustomerID=SEVES
CustomerID=SIMOB
CustomerID=SPECD
CustomerID=SPLIR
CustomerID=SUPRD
CustomerID=THEBI
CustomerID=THECR
CustomerID=TOMSP
CustomerID=TORTU
CustomerID=TRAIH
CustomerID=VAFFE
CustomerID=VICTE
CustomerID=VINET
CustomerID=WANDK
CustomerID=WARTH
CustomerID=WELLI
CustomerID=WHITC
CustomerID=WILMK
CustomerID=WOLZA	OrderCount=6
OrderCount=4
OrderCount=7
OrderCount=13
OrderCount=18
OrderCount=7
OrderCount=11
OrderCount=3
OrderCount=17
OrderCount=14
OrderCount=10
OrderCount=6
OrderCount=1
OrderCount=8
OrderCount=5
OrderCount=3
OrderCount=6
OrderCount=4
OrderCount=8
OrderCount=30
OrderCount=7
OrderCount=0
OrderCount=5
OrderCount=19
OrderCount=15
OrderCount=3
OrderCount=6
OrderCount=8
OrderCount=5
OrderCount=10
OrderCount=9
OrderCount=11
OrderCount=2
OrderCount=14
OrderCount=18
OrderCount=5
OrderCount=19
OrderCount=10
OrderCount=14
OrderCount=4
OrderCount=14
OrderCount=3
OrderCount=2
OrderCount=15
OrderCount=4
OrderCount=14
OrderCount=12
OrderCount=8
OrderCount=10
OrderCount=7
OrderCount=13
OrderCount=5
OrderCount=3
OrderCount=5
OrderCount=10
OrderCount=9
OrderCount=0
OrderCount=6
OrderCount=10
OrderCount=6
OrderCount=9
OrderCount=13
OrderCount=28
OrderCount=5
OrderCount=18
OrderCount=12
OrderCount=11
OrderCount=10
OrderCount=5
OrderCount=6
OrderCount=31
OrderCount=9
OrderCount=7
OrderCount=4
OrderCount=9
OrderCount=12
OrderCount=4
OrderCount=3
OrderCount=5
OrderCount=10
OrderCount=7
OrderCount=3
OrderCount=11
OrderCount=10
OrderCount=4
OrderCount=10
OrderCount=15
OrderCount=9
OrderCount=14
OrderCount=8
OrderCount=7
``````

## Count - Grouped

This C# example uses the LINQ Count method with a dynamic expression to return a list of categories and how many products each has.

### LINQ

```private void uiCount_Grouped_LINQ_Click(object sender, EventArgs e)
{
var products = My.GetProductList();

var categoryCounts = products.GroupBy(p => p.Category).Select(g => new {Category = g.Key, ProductCount = g.Count()});

var sb = new StringBuilder();

My.ObjectDumper.Write(sb, categoryCounts);

My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}
```

### LINQ Execute

```private void uiCount_Grouped_LINQ_Execute_Click(object sender, EventArgs e)
{
var products = My.GetProductList();

var categoryCounts = products.Execute("GroupBy(p => p.Category).Select(g => new { Category = g.Key, ProductCount = g.Count() })");

var sb = new StringBuilder();

My.ObjectDumper.Write(sb, categoryCounts);

My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}
```

### Result

``````Category=Beverages
Category=Condiments
Category=Produce
Category=Meat/Poultry
Category=Seafood
Category=Dairy Products
Category=Confections
Category=Grains/Cereals	ProductCount=12
ProductCount=12
ProductCount=5
ProductCount=6
ProductCount=12
ProductCount=10
ProductCount=13
ProductCount=7
``````