Получение всех моих сообщений за определенный период (лямбда-выражение) - PullRequest
2 голосов
/ 31 января 2012

Мне бы хотелось, чтобы лямбда-выражение получало все мои сообщения с PublishDate за определенный месяц / год (например, 10/2011).

public IEnumerable<Post> SearchPosts(string periode)
{
    // periode may be 10/2011 so I would like all posts from 10/01/2011 to 10/31/2011
    return m_PostRepository.GetPosts().Where(x => x.PublishDate...?
}

Ответы [ 3 ]

2 голосов
/ 31 января 2012

Описание

Вы можете сделать это, используя DateTime свойства Year и Month в вашем Where фильтре.

Пример

return m_PostRepository.GetPosts().Where(x => x.PublishDate.Year == 2011 &&
                                              x.PublishDate.Month == 10).ToList();

Дополнительная информация

Обновление после комментария от Bronzato

DateTime? date;
// does date has a value ? If yes, apply the filter. If not return everything.
if (date.HasValue)
{
    return m_PostRepository.GetPosts().Where(x => x.PublishDate.Year == date.Value.Year &&
                                                  x.PublishDate.Month == date.Value.Month).ToList();
} else return return m_PostRepository.GetPosts();
1 голос
/ 31 января 2012

Вы также можете попробовать это так (работая с PublishDate как Nullable<DateTime>):

DateTime date;
if (DateTime.TryParseExact(value, "MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
    var result = m_PostRepository.GetPosts().Where(x => x.PublishDate.HasValue && 
        x.PublishDate.Value.Month == date.Month && 
        x.PublishDate.Value.Year == date.Year).ToList();
}
0 голосов
/ 31 января 2012
    public IEnumerable<Post> SearchPosts(string periode){

string[] _periode = periode.Split("/");
return m_PostRepository.GetPosts().Where(x => x.PublishDate.year = convert.ToInt16(_periode[1])).Where(x => x.PublishDate.Month= convert.ToInt16(_periode[0]))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...