# LINQ queries

## Content

LINQ queries demonstrate how to operate and query the Magento objects wrapped in an Entity Framework data model. Below are some examples of LINQ queries supported by the Entity framework.
**Select and Filter**
Retrieve records from the **Products** table where the **Product Name** is "**Vintage Backpack**".

```csharp
var records = from p in context.Products
            where p.Code== "Vintage Backpack"
            select new { p.Id, p.Name, p.Price};
```

**Contains**
Retrieve records from the **CustomerGroups** table where the **Code** property contains the substring "**Retailer**".

```csharp
var records = context.CustomerGroups.Where(x => x.Code.Contains("Retailer")); 
```

**Limit**
Retrieve the first 10 records from the **Products** table.

```csharp
var records = (from p in context.Products
            select p).Take(10); //taking 10 records
```

**Order by**
Retrieve all records from the **CustomerGroups** table and sort them in descending order based on the **Code** property.

```csharp
var records = (from p in context.CustomerGroups
            orderby p.Code descending//Implementing Order By
            select p);
```

**Count**
Count all entities that match a given criterion.

```csharp
var _count = (from p in context.Products 
            select p).Count();//Count Query based on the number of records selected
```

**Group By**
Group records from the **Products** table based on the **Price** property. The groups are then ordered in descending order based on the **Price**.

```csharp
var sampleTable = context.Products.AsEnumerable();
var queryCreatedBy = from b in sampleTable
                    group b by b.Price  into newGroup //Linq Group Query based on Price 
                    orderby newGroup.Key descending
                    select newGroup;
```

**Joins**
Cross-join between the **Products** and **CustomerGroups** tables.

```csharp
var records = from b in context.Products 
            from e in context.CustomerGroups
            select new { b, e };//Defining Cross Join
```