I have the following parameters:

```
public object GetDataByProjectCostID(string employeeid, DateTime costdate, int id = 0)

```

And the query:

```
var projectCost = (from pc in db.ProjectCosts
                           where pc.ProjectCostID == id
                           where System.Data.Entity.DbFunctions.TruncateTime(pc.CostDate) == costdate.Date

                           join p in db.Projects
                           on pc.ProjectID equals p.ProjectID

                           join sct in db.SubCostTypes
                           on pc.SubCostTypeID equals sct.SubCostTypeID

                           join ct in db.CostTypes
                           on sct.CostTypeID equals ct.CostTypeID

                           select new
                           {
                               p.ProjectName,
                               ct.CostTypeName,
                               ct.CostTypeID,
                               sct.SubCostTypeName,
                               pc.ProjectID,
                               pc.ProjectCostID,
                               pc.SubCostTypeID,
                               pc.Amount,
                               pc.Quantity,
                               pc.Note,
                               pc.CreatedBy,
                               sct.Unit,
                               pc.CreateDate,
                               pc.CostDate,
                               pc.ProjectCostImage

                           }).ToList();

```

Now my question is how i can add optional parameter in query.
Suppose if id not existed in request then i need to skip the where clause

> 
> where pc.ProjectCostID == id
> 
> 
> 

In sql we can use when clause for that but what for in LINQ?
Thanks in advance.