2015-07-03 2 views
0

Мне нужно сгруппировать несколько строк из-за Year of nullable DateTime (DateTime?). Это мой код:Как проанализировать нулевую дату Datetime во время операции группы LINQ?

group x by DateTime.Parse(x.MyDate).Year into g 

но так как он недействителен, я не могу этого сделать.

TryParse нуждается в out переменной, которая, на мой взгляд, бесполезна здесь, так как она нуждается в обработке внутри соответствия LINQ.

Как бы вы это достигли? Внешняя функция? Или есть более быстрый/умный способ?

+0

Надеюсь, вы не пытаетесь выполнить запрос SQL DB с этим выражением LINQ, потому что это не сработает ... – xanatos

ответ

1

В зависимости от того, что вы предназначаться с Linq, может быть, вы можете использовать:

group x 
by string.IsNullOrEmpty(x.MyDate) ? (int?)null : DateTime.Parse(x.MyDate).Year 
into g 
0

Здесь вы:

List<DateTime?> dateTimes = new List<DateTime?> 
    {DateTime.Now, null, DateTime.Now.AddDays(10)}; 
var query = from x in dateTimes group x by x into g where g.Key.HasValue select g.Key; 

Надеются, что это поможет.

1

Вы можете избежать TryParse, если он defenetly DateTime? поле. Тогда ваш результирующий код будет выглядеть так:

var testx = from x in lst 
      group x by x.MyDate.HasValue?x.MyDate.Value.Year:0 into g 
      select g; 
Смежные вопросы