我想快速选择一些行,为dropdownlist / selectlist或类似的东西很好地格式化它 - 但我在db中有一个字段,可以为空(DateOfBirth)。
var athletes = (from at in _db.Athletes
select new{
Name = at.Name + " " + at.DateOfBirth,
Id = at.AthleteId
}).ToList();
在这种情况下,有没有办法在LINQ中处理可空类型?
编辑:
我没注意这个事实,因为这是使用实体框架,除非他们有SQL翻译,否则不能使用与标准LINQ一起使用的方法。
答案 0 :(得分:7)
您可以使用null coalesce运算符,请参阅Equivalent of SQL ISNULL in LINQ?。
类似的东西:
var athletes = (from at in _db.Athletes
select new{
Name = at.Name + " " + (at.DateOfBirth ?? ""),
Id = at.AthleteId
}).ToList();
答案 1 :(得分:2)
通常可以使用variable ?? default
var res = nullableVariable ?? defaultValue;
但要注意datetime,linq将尝试在SQL中实现此功能,而来自C#的DateTime.MinValue不在SQL的有效范围内,并且会给出错误消息。
答案 2 :(得分:2)
由于你只是在做字符串追加,试试这个。
var athletes = (from at in _db.Athletes
select new{
Name = at.Name + " " + (at.DateOfBirth ?? string.Empty),
Id = at.AthleteId
}).ToList();
答案 3 :(得分:0)
在VB.NET中
Dim athletes = (From at In _db.Athletes
Select New With{
.Name = at.Name + " " + If(at.Field(Of Object)("DateOfBirth") = Nothing, string.Empty, at.Field(Of Object)("DateOfBirth")),
.Id = at.AthleteId
}).ToList()