我正在循环浏览公司列表,并使用以下 linq 查询创建一个匿名对象,以检索我想要的数据。
查询如下所示:
var customMail = this.db.Companies.Where(c => c.Id == company.Id)
.Select(x => new { x.FromMail, x.FromName, x.Subject, x.EmailBody })
此对象以列表形式正确填充,其中包含一个包含正确详细信息的结果。但有时一个字段包含null
如何过滤掉这些空值?
我尝试了以下方法但没有成功:
var customMail = this.db.Companies.Where(c => c.Id == company.Id)
.Select(x => new { x.FromMail, x.FromName, x.Subject, x.EmailBody })
.Select(a => a.GetType().GetProperties()
.Where(pi => pi.GetValue(a) != null)
.Select(pi => pi.GetValue(a)));
我很想获取没有空值的对象,然后在方法中使用其值。
如果要过滤掉任何属性设置为 null
的对象,可以这样做:
var customMail = this.db.Companies.Where(c => c.Id == company.Id)
.Select(x => new { x.FromMail, x.FromName, x.Subject, x.EmailBody })
.AsEnumerable() // Now you can use reflection
.Where(
a => a.GetType().GetProperties().All(pi => pi.GetValue(a) != null)
);
这将生成一个匿名对象列表,其中所有属性都设置为非 null 值。