Как вычесть две даты в LINQ? - PullRequest
0 голосов
/ 16 апреля 2019

У меня проблема с вычитанием двух дат в базе данных MySQL и сравнением их с числами int.Я пытался использовать dbfunctions.diffdays, однако это конфликт типов.

Когда я запускаю приложение, я получаю сообщение:

System.ArgumentException: 'Аргументы DbArithmeticExpression должны иметь общий числовой тип.'

Нижемой код я

    int intervalDay = 25;
    var dateCount = (from Rezerwacje in db.Rezerwacje
                     join rooms in db.rooms on Rezerwacje.PokojID equals rooms.id
                     where (rooms.floor > 0 && rooms.floor <= 2) &&(Rezerwacje.DataDo == dateTime) && ((Rezerwacje.DataDo - Rezerwacje.DataOd).Days > intervalDay)
                     select Rezerwacje).Count();
                     return dateCount;

Ответы [ 3 ]

0 голосов
/ 16 апреля 2019
 using System.Data.Entity;

 //code in LINQ
 ... DbFunctions.DiffDays(Rezerwacje.DataDo, Rezerwacje.DataOd) >= intervalDay
0 голосов
/ 16 апреля 2019

В конечном итоге я использую List и foreach.

Загрузка данных из базы данных:

public int DateCleanFloor1to2(DateTime dateTime)
{
            var dateList = (from Rezerwacje in db.Rezerwacje
                            join rooms in db.rooms on Rezerwacje.PokojID equals rooms.id
                            where (rooms.floor > 0 && rooms.floor <= 2) && (Rezerwacje.DataDo == dateTime)
                            select Rezerwacje).ToList();

            return SubtractDateToDateFrom(dateList, dateTime.AddDays(25));
 }

И метод с циклом foreach:

public int SubtractDateToDateFrom(List<Rezerwacje> dateList, DateTime dateTime)
{
            int count = 0;
            foreach (var item in dateList)
            {
                if (item.DataDo < dateTime)
                {
                    count++;
                }
            }

            return count;
}

@ DevilSuichiro @Arulkumar @ Seven

0 голосов
/ 16 апреля 2019

Вы можете использовать System.Data.Objects.EntityFucntions

и в коде:

where ... &&
      EntityFunctions.DiffDays(Rezerwacje.DataDo, Rezerwacje.DataOd) > intervalDay
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...