2013-07-04 88 views
-2

嗨,我已经写的区别LINQ查询这样找到一个DateTime和一个DateTime

IssuedBooks = (from transaction in db.BookTransaction 
    join tag in db.BookTagMaster on transaction.BookTagID equals tag.ID 
    where tag.IsTagActive == true 
    join book in db.BookMaster on tag.BookID equals book.ID 
    join author in db.AuthorMaster on book.AuthorID equals author.ID 
    join category in db.CategoryMaster on book.CategoryID equals category.ID 
    join publisher in db.PublisherMaster on book.PublisherID equals publisher.ID 
    select new BookIssuedView 
    { 
     ID = transaction.ID, 
     EmployeeName = transaction.EmployeeName, 
     IssuedDate = transaction.IssuedDate, 
     ReturnDate = transaction.ReturnDate, 
     BookName = book.Name, 
     AuthorName = author.Name, 
     CategoryName = category.Name, 
     PublisherName = publisher.Name, 
     SiteID = tag.SiteID, 
     BuildingID = tag.BuildingID, 
     LateFees = transaction.LateFees, 
     DueDate = transaction.DueDate, 
     LateBy = (!transaction.IsReturned)?0:(transaction.ReturnDate - transaction.DueDate).TotalDays 
    }).ToList();   

但我ReturnDate是一个可空变量,DateTime类型的?和交货期只是日期时间,因此编译器抛出一个错误,这卡恩不能做任何机构可以帮助我角落找寻这个

+0

我只需要作为建议,我怎么能找到的日期时间之间的天数不同?和DateTime请帮助 –

+0

哦,我修好了我所要做的就是这个 'LateBy =(!transaction.IsReturned)?0:(transaction.ReturnDate.Value - transaction.DueDate).TotalDays' –

+1

你想要发生什么当ReturnDate为空时? –

回答

1

工作,你可以检查的为空的日期时间HasValue属性,然后比较Value属性(在这种情况下,DATETIME)与交货期:

IssuedBooks = (from transaction in db.BookTransaction 
join tag in db.BookTagMaster on transaction.BookTagID equals tag.ID 
where tag.IsTagActive == true 
join book in db.BookMaster on tag.BookID equals book.ID 
join author in db.AuthorMaster on book.AuthorID equals author.ID 
join category in db.CategoryMaster on book.CategoryID equals category.ID 
join publisher in db.PublisherMaster on book.PublisherID equals publisher.ID 
select new BookIssuedView 
{ 
    ID = transaction.ID, 
    EmployeeName = transaction.EmployeeName, 
    IssuedDate = transaction.IssuedDate, 
    ReturnDate = transaction.ReturnDate, 
    BookName = book.Name, 
    AuthorName = author.Name, 
    CategoryName = category.Name, 
    PublisherName = publisher.Name, 
    SiteID = tag.SiteID, 
    BuildingID = tag.BuildingID, 
    LateFees = transaction.LateFees, 
    DueDate = transaction.DueDate, 
    LateBy = (!transaction.IsReturned && !transaction.ReturnDate.HasValue)?0:(transaction.ReturnDate.Value - transaction.DueDate).TotalDays 
}).ToList();