LINQ to Entity Child查询Parent具有特定属性的位置

使用C#和LINQ实体我有一个孩子和父母实体搜索问题。 在概念上,我试图获得IEnumerable儿童的集合,这些儿童具有某些属性,而且这些儿童的父母也具有某些属性。

具体而言,我有路线和街道,它们之间有多对多的关系。 我试图找到街道上的街道具有LeftNote或RightNote的积极属性的特定路线(LeftNote和RightNote是字符串,我正在搜索不是空白的字符串)。

我有以下实体(为了清晰起见而减少)

public class Route
{
    public int RouteID { get; set; }

    public virtual ICollection<Street> Streets { get; set; }
}

public class Street
{
    public string LeftNote { get; set; }

    public string RightNote { get; set; }

    public virtual ICollection<Route> Routes { get; set; }
}

我有以下LINQ表达式:

var streets = this.repository.Routes
                        .Where(r => r.RouteID == routeId).FirstOrDefault()
                        .Streets
                        .Where(s => s.LeftNote.Length > 0 || s.RightNote.Length > 0);

这完美的工作,直到我运行此对路线存在的实体数据,但没有街道有LeftNotes或RightNotes。 在这些情况下,我得到一个NullReference异常。 我试图找到一种方法来正确表达这个查询处理与LeftNotes街道的缺席(应始终存在一个匹配routeId的路由,如果不是这是一个有效的异常情况,应该抛出和错误)。

编辑︰问题似乎是围绕空字符串,而不是任何有关的LINQ构造。


你的意思是吗?

var streets = repository.Streets.Where
       (s => s.Routes.Any(r => r.RouteID == routeId )
             && (s.LeftNote.Length > 0 || s.RightNote.Length > 0));

var streets = this.repository
                  .Routes
                  .Where(r => r.RouteID == routeId).FirstOrDefault()
                  .Streets
                  .Where(s => s.LeftNote !=null ? s.LeftNote.Length > 0 : false
                          || s.RightNote !=null ? s.RightNote.Length > 0 : false);

没有对它进行测试,但认为它应该起作用。

要么

this.repository.Streets(s=>(s.LeftNote.Length >0 || s.RightNote.Length > 0 ) 
                             && s.Routes.routeId==routeId));

只需使用String.IsNullOrEmpty()。

var streets = this.repository
                .Routes
                .Where(r => r.RouteID == routeId).FirstOrDefault()
                .Streets
                .Where(s => !String.IsNullOrEmpty(s.LeftNote) ||
                            !String.IsNullOrEmpty(s.RightNote));
链接地址: http://www.djcxy.com/p/37651.html

上一篇: LINQ to entities Child queries where Parent has certain properties

下一篇: Entity Framework: Querying Child Entities