2017-01-06 5 views
0

У меня есть таблица и нужно, чтобы получить список, группируя Field1 и Field2LinQ Группировка записей с нулевыми значениями

public class Journal 
{ 
    public int ID {get; set;} 
    public string DateField { get; set; } 
    public string Notes { get; set; } 
    public int Field1 { get; set; } 
    public string Field2 { get; set; } 
} 

Прежде всего я фильтровать данные по Field2 (строка) и при группировке по двум полям (Field1 и Field2)

MyList = DBContext.Journals.Where(f=>f.Field2.StartsWith(someParam)) 
          .GroupBy(g => new { g.Field1, g.Field2 }) 
          .Select(n=> n.Key.Field1).ToList(); 

Если Field1 и Field2 не равно нулю, все нормально, но как решить проблему, если они нулевые, могли бы вы помочь?

Если есть обнуляет, я получил исключение:.

«Бросок к типу значения„System.Int32“не удалось, потому что материализовалось значение равно нулю либо универсальный параметр типа результата или запрос должен использовать тип с нулевым значением ".

+2

Field1 никогда не может быть пустым - это тип значения. –

+3

Использовать 'public int? Поле1 {get; задавать; } 'в' Журнале';). –

+0

А как насчет MyList? Список MyList = новый Список (); ? – Songaila

ответ

1

вы пробовали, может быть что-то вроде:

MyList = DBContext.Journals.Where(f=> !String.IsNullOrEmpty(f.Field1) && f.Field2 != null && (f.Field2.StartsWith(someParam))) 
          .GroupBy(g => new { g.Field1, g.Field2 }) 
          .Select(n=> n.Key.Field1).ToList(); 
+0

int Field2. Результат выражения всегда «истинный», поскольку значение типа «int» никогда не равно «null» типа «int». Но это всегда так, почему я получаю исключение из null ... как решить эту проблему в инфраструктуре сущности, а не на сервере, фильтруя нулевые записи (мне тоже нужны, даже если они являются нулевыми) – Songaila