Во-первых, добро пожаловать в SO!
Полагаю, вы используете LINQ-to-Entities и хотели бы сохранить синтаксис, который вы используете в данный момент. Когда дело доходит до объединений, я лично считаю, что это гораздо более читабельно. Но если вы хотите преобразовать свое выражение в лямбду, это должно быть эквивалентно:
// models just for testing...
var employees = new List<Employee>()
{
new Employee()
{
emp_id = 1,
emp_name = "Name 1"
},
new Employee()
{
emp_id = 2,
emp_name = "Name 1"
},
new Employee()
{
emp_id = 3,
emp_name = "Name 1"
}
};
var ordermasters = new List<OrderMaster>()
{
new OrderMaster()
{
emp_name = "Name 1",
emp_id = 1,
Order_date = DateTime.Now
},
new OrderMaster()
{
emp_name = "Name 3",
emp_id = 3,
Order_date = DateTime.Now.AddDays(1)
}
};
var result = employees.Join(ordermasters, // Replace employees and ordermasters with your tables.
e => e.emp_id,
o => o.emp_id,
(empl, ord) => new { Employees = empl, OrderMasters = ord })
.Where(arg => EntityFunctions.DiffMonths(arg.OrderMasters.Order_date, dt) == 3)
.Select(arg => new
{
emp_name = arg.Employees.emp_name,
emp_id = arg.OrderMasters.emp_id,
order_date = arg.OrderMasters.Order_date
});
Что касается LINQ, он должен возвращать тот же результат. Если он конвертируется в один и тот же SQL, это совершенно другое.