LinQ分组记录为空值

时间:2017-01-06 06:19:33

标签: linq code-first

我有一张桌子,需要通过分组Field1和Field2来获取列表

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不为null,一切正常,但如果它们为null,如何解决问题,你可以帮忙吗?

如果有空值,我有一个例外:

  

“转换为值类型'System.Int32'失败,因为具体化值为null。结果类型的泛型参数或查询必须使用可空类型。”

1 个答案:

答案 0 :(得分: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();