LINQ - использование выражения запроса для расчета разницы во времени данных - PullRequest
7 голосов
/ 08 июля 2011

Я использую EntityFramework 4, LINQ и C #.

Мне нужно отобразить данные в GridView из выражения запроса с использованием Linq;Мне нужен проект как anonymous type значение, вычисляемое на лету DateTime.UtcNow - cl.DateLocked Примечание: cl.DateLocked имеет тип DateTime, и мне нужно знать, сколько дней различие между этими двумя датами.Я получаю сообщение об ошибке:

DbArithmeticExpression arguments must have a numeric common type. 

Есть идеи, как это сделать в Linq?Если Linq не позволяет, как это сделать по-другому?

Спасибо за ваше время

var queryContentsLocked = from cl in context.CmsContentsLockedBies
                          join cnt in context.CmsContents
                          on cl.ContentId equals cnt.ContentId
                          join u in context.aspnet_Users
                          on cl.UserId equals u.UserId
                          select new
                          {
                            cl.DateLocked,
                            cnt.ContentId,
                            cnt.Title,
                            u.UserName,
                            u.UserId,
                            TimePan = DateTime.UtcNow - cl.DateLocked // Problem here!!!
                          };

Ответы [ 3 ]

8 голосов
/ 08 июля 2011
var queryContentsLocked = from cl in context.CmsContentsLockedBies
                          join cnt in context.CmsContents
                          on cl.ContentId equals cnt.ContentId
                          join u in context.aspnet_Users
                          on cl.UserId equals u.UserId
                          select new
                          {
                            cl.DateLocked,
                            cnt.ContentId,
                            cnt.Title,
                            u.UserName,
                            u.UserId,
                            Days = SqlFunctions.DateDiff("day", cl.DateLocked, DateTime.UtcNow)
                          };
2 голосов
/ 18 декабря 2012

Не используя SqlFunction

var grandTotalWork = (from t in db.AssignmentHandymandetails
                           join ad in db.AssignmentDetails on t.assignment_detail_id equals ad.assignment_detail_id
                           where ad.assignment_id == Convert.ToInt32(Label_assignmentId.Text)
                            select new { startTime = t.started_time.Value.TimeOfDay, endTime = t.end_time.Value.TimeOfDay, TotalWorkTime = (t.started_time.Value.TimeOfDay.Duration() - t.end_time.Value.TimeOfDay.Duration()).Duration()});

, вы можете связать результат в GridView по вашему желанию

0 голосов
/ 08 июля 2011

Попробуйте это:

DateTime.UtcNow.Subtract(cl.DateLocked).TotalDays
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...