【发布时间】:2017-01-06 06:19:33
【问题描述】:
我有一张表,需要通过对 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。结果类型的泛型参数或查询必须使用可为空的类型。”
【问题讨论】:
-
Field1 不能为空——它是一个值类型。
-
在
Journal中使用public int? Field1 { get; set; };)。 -
MyList 呢?列表
MyList = 新列表 (); ? -
@Songeila 您是否尝试过进行空检查?比如:
DBContext.Journals.Where(f => ! (f.Field2 == null || f.Field2.Equals(string.Empty) ) && f.Field2.StartsWith(someParam)) -
对我来说最大的问题是关于 int 类型的字段...字符串是可以的
标签: linq code-first