2017-01-06 36 views
0

我有一個表,需要通過分組字段1和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; } 
} 

首先我過濾數據的字段2(串)和兩個字段分組時(Field 1和字段2)

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

如果字段1和Field2不爲空,一切都很好,但如何解決一個問題,如果他們是空的,你能幫忙嗎?

如果有空,我有一個例外:

「演員到值類型‘System.Int32’失敗,因爲物化值爲null無論是結果型的泛型參數或查詢必須使用一個可爲空的類型「。

+2

字段1永遠不能爲null - 這是一個值類型。 –

+3

使用'public int? Field1 {get;組; }'在'Journal';)中。 –

+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'類型的值永遠不會等於'int'類型的'null'。但它總是如此,爲什麼我得到關於null的異常......如何在實體框架中解決這個問題,而不是在服務器中通過過濾可空記錄(我也需要它們,即使它們爲空) – Songaila