我有类型为T的对象的IQueryable列表,我想将其转换为K类型的对象
List<K> tranformedList = originalList.Select(x => transform(x)).ToList();
Run Code Online (Sandbox Code Playgroud)
如果转换函数不能转换对象,则返回null.如果我想过滤掉null元素,我可以调用它
List<K> tranformedList = originalList.Select(x => transform(x))
.Where(y => y != default(K))
.ToList();
Run Code Online (Sandbox Code Playgroud)
或者在LINQ中调用Select时是否还有其他过滤掉null元素的方法?
我的DBML公开了一个具有可空nvarchar字段的记录集.这个可空的nvarchar字段在我的C#代码中表示为一个字符串.
有时这个字段为空,有时它是一个空字符串,有时它实际上有一个值.
是否String.IsNullOrEmpty()
在工作的LINQ到SQL?例如,以下工作:
var results = from result in context.Records
where String.IsNullOrEmpty(result.Info) == false
select result;
Run Code Online (Sandbox Code Playgroud) 我使用EF 4.0作为其数据库后端在ASP.NET 4.0 Web应用程序上发生了一件非常奇怪的事情.从本质上讲,我有一个存储用户的密码重置请求(包含类型的复位键的表中byte[]
,类型的到期DateTime
,以及一个外键,一个User
包含string Email
和string Name
).有些用户没有设置电子邮件地址,所以对于a PasswordRequest request
,request.Email
是null
.
这是问题所在.这非常好用:
string u = Request["u"];
string e = Request["e"];
var requests = from r in context.PasswordRequests
where r.User.Name == u && r.User.Email == null && r.Expiry >= DateTime.Now
select r;
Run Code Online (Sandbox Code Playgroud)
我得到预期的结果数量(非零,因为有null
电子邮件条目).
但是,当这个总是返回一个空集e
是null
:
string u = Request["u"];
string e = Request["e"];
var requests = from r in context.PasswordRequests
where r.User.Name == u …
Run Code Online (Sandbox Code Playgroud)