2010-11-22 3 views
0
var postsidebar = from post in postrepository.GetAllPosts() 
    join pstmt in postrepository.GetAllPostMetas() 
    on post.int_PostId equals pstmt.int_PostId 
    where (post.int_PostTypeId == 4 
     && post.int_PostStatusId == 2 
     && post.int_OrganizationId == layoutrep.GetSidebarDetailById(SidebarDetailsId).int_OrganizationId) 
     && (pstmt.vcr_MetaKey.Contains(filter) && pstmt.vcr_MetaValue.Contains("true")  
     && (System.DateTime.Now >= 
      Convert.ToDateTime(pstmt.Post.PostMetas.FirstOrDefault(m => 
       m.vcr_MetaKey == "Publish Date").vcr_MetaValue))) 
    select post; 

Как я могу проверить на пустой в этой части в Дата (он дает ошибке)asp.net проверка MVC datettime LINQ для пустого

&& (System.DateTime.Now >= Convert.ToDateTime(pstmt.Post.PostMetas.FirstOrDefault(m => 
    m.vcr_MetaKey == "Publish Date").vcr_MetaValue))) 
+0

Что ошибка? FirstOrDefault() не дает никаких? – danijels

ответ

1

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

&& pstmt.Post.PostMetas.FirstOrDefault(m => 
    m.vcr_MetaKey == "Publish Date" 
    && !string.IsNullOrEmpty(m.vcr_MetaValue)) 
&& (System.DateTime.Now >= 
     Convert.ToDateTime(pstmt.Post.PostMetas.FirstOrDefault(m => 
      m.vcr_MetaKey == "Publish Date").vcr_MetaValue))) 
+0

Я был успешным с нулевым – maztt

0

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

// declare the action for re-use 
Func<PostMeta,bool> action = m => m.vcr_MetaKey == "Publish Date"; 

// then test for Any() before comparing anything 
&& (pstmt.Post.PostMetas.Any(action) && System.DateTime.Now >= Convert.ToDateTime(pstmt.Post.PostMetas.First(action).vcr_MetaValue))) 
Смежные вопросы