使用C#和LINQ到實體我有孩子和家長實體搜索的問題。在概念上,我試圖讓孩子們的IEnumerable當這些孩子有一定的特性以及這些孩子的父母有一定的屬性的集合。LINQ到實體子查詢,其中母公司有一定的性能
具體而言我有路線和街道上有一個多對多的關係。我試圖找到街道上,其中有街或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的構建。
路由沒有LeftNote和RightNote,而是Streets擁有它們。 – Marshal 2012-04-27 11:08:15
我會按照你所描述的測試 – AlexC 2012-04-27 17:07:54