Как использовать объединение в Entity Framework с C # - PullRequest
0 голосов
/ 24 октября 2019

У меня есть две переменные Income и Expense, я хочу объединить эти две переменные и поместить результат в переменную sumSalary, но я всегда получаю ошибку (ошибка в sumSalary при Income). Пожалуйста, помогите мне решить эту проблему.

public void PayrollReport()
{
    var income = employeeList.SelectMany(a => a.IncomesModel,(a,b) => new 
            {
                a.Salary,
                a.HolidayAllowance,
                EmployeeNik = a.NIK,
                EmployeeName = a.FirstName,

                b.Amount,
                b.ModelType,
                b.PeriodTime
            });

    var expense = employeeList.SelectMany(a => a.ExpensesModel, (a, b) => new
            {
                EmployeeNik = a.NIK,
                EmployeeName = a.FirstName,

                b.Amount,
                b.ModelType
            });

    var sumSalary = income.Union(expense);
}

1 Ответ

0 голосов
/ 24 октября 2019

Вы не сможете сделать это с анонимными типами (т.е. new {..}), вам нужно будет иметь точно такие же свойства в вашем анонимном типе (как упомянуто gsharp ) или создайте конкретный класс со всеми необходимыми полями , чтобы вы могли объединение их.

public class MyCombinedClass
{
   public decimal Salary {get; set;}
   ...
   public string EmployeeNik {get; set;}
   ...
}

использование

var income = employeeList.SelectMany(a => a.IncomesModel,(a,b) 
    => new MyCombinedClass
        {
            a.Salary,
            ...
        });

var expense = employeeList.SelectMany(a => a.ExpensesModel, (a, b) 
    => new MyCombinedClass
        {
            EmployeeNik = a.NIK,
            ...
        });

var results = income.Union(expense);

Примечание : В зависимости от того, что, когда и почему это может быть выполнено полностью на сервере

...