C# 基于匿名类上的导航属性的LINQ to Entities null条件
我正在LINQ to Entities查询中选择匿名类:C# 基于匿名类上的导航属性的LINQ to Entities null条件,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,我正在LINQ to Entities查询中选择匿名类: var users = (from u in db.Users.OrderByDescending(u => u.ID).Skip(skip).Take(200) select new{ u.ID, u.FirstName, u.LastName, u.Gender, u.IsEnabled, u.Media }).ToList(); 问题在于媒体专栏媒体是一个导航属性,
var users = (from u in db.Users.OrderByDescending(u => u.ID).Skip(skip).Take(200)
select new{
u.ID, u.FirstName, u.LastName, u.Gender, u.IsEnabled, u.Media
}).ToList();
问题在于媒体专栏<代码>媒体是一个导航属性,可以有零个或多个对象Media
是一个类,它有一个URL
属性,在User
上有自己的表和导航属性。我想选择一个匿名类,例如:
select new{
u.ID, u.FirstName, u.LastName, u.Gender, u.IsEnabled, "u.Media's first items URL proprty, or null/empty string if u.Media is empty"
}).ToList();
这可能吗?如果是,如何执行?因为这是一个
linq to enities
查询,所以您可以执行此操作,无需担心空引用异常
u.Media.FirstOrDefault().Url
当fluent和query语法混合在一起时,我的眼睛很痛!关于主题:难道你不能像:
u.Media.Any()那样内联吗?u、 Media.First().Url:null
?我也讨厌这种语法,但这是解释它的最好方法:)这很有效,但有一点小小的改变。它首先抛出了一个异常,告诉我应该使用FirstOfDefault
而不是first
,我这样做了,然后它就工作了。因此,我的最后一个代码是u.Media.FirstOrDefault().URL
@CanPoyrazoğlu-有趣的是,states是一个受支持的方法…我是否遗漏了什么?我不确定。。但是实体框架(或LINQ)自己的例外告诉我改为FirstOrDefault。@CanPoyrazoğlu-您使用的是哪个版本的实体框架?